* `start()` returns a `Promise<Void>`
* `Promise.await()` calls `Promise.await(defaultTimeout)`
* The while loop exits when the state changes from PENDING or the time runs out
* `return get()`

If the state is still pending get() returns `null`; if it's success, we get `value`; we only get an exception if the state is `FAILURE`.

So, the fact that `start()` returns a `Promise<Void>` means we always get null, but we can't tell success Vs. timeout.

What am I missing?