The one thing I'm still skeptical about is that this is in the Future interface instead of in the impl.
Why is it not in the impl, I assume that other implementation of Futures don't want to have this here since they most likely won't use DefaultPromise as their Promise impl. What do you think?