I find the name of this kind of confusing because it's not clear that a promise is somehow an action. Wouldn't it be better to call this ComplexFutureAction or something like that? It's also weird that this is both a Promise and a Future, though I guess callers want to use it as a Promise. It might be better if this only had the Promise as a field instead of extending Promise.