Replace std::promise<> with my own TaskPromise<>