concurrent::Promise
abstract Err? err()
abstract Bool isDone()
static new make()
abstract Promise^T? result()
abstract Void then(Func<Void,Promise^T?,Err?> f)