Would be nice to have a `wake` function that cancels the timeout, rejecting the promise. Something like Angular's $timeout.
But I guess you need at least a bunch of lines for that.
Indeed, it's one of the main arguments about the future development of JS promises.
Also, `setTimeout` should be updated to become a promise (alas, won't happen because `setInterval` can't be promisified too).
Maybe Promises are just the wrong tool for this kind of stuff in general.
Interestingly it would be no problem solving these problems with Observables. Cancelation can be done with `dispose` and setInterval would also be trivial to implement.