If you are interested in performing additional calculations on Promise<T>, you may find this small library useful. Mutex, producer-consumer separation (side-effect operation), signaling (flag control) ...
C++ 20 contains the core language support needed to make coroutines (async/await) possible, but it does not provide the related types needed to write an actual coroutine or functions to consume ...