I'm wondering if it should be the other way around, we should make F.Future an interface, and have F.Promise implement it.  Since promise is a specialisation of future (it is a future that can be redeemed), and I think it's much nicer to have these things as interfaces, as it means that we could easily sub in other implementations, eg, a CompletableFuture backed Future.