Abstractions for promise-based asynchronous programming
