There are indications, though, that in the domain of asynchronous services coroutines are going to be extremely useful. Take a look at the adoption of Go as a language. Part of of its adoption is driven by its native support for coroutines (every function in Go is basically a suspending function) and some other part by various asynchronous (non blocking) libraries written on top of that. And that gets back to your original question about futures. You'll hardly find any futures in a typical service written in Go. They are all based on the suspending nature of Go functions.