can you elaborate on what is "real coroutine support" and how are these better than promises?
See http://taskjs.org/ for how it could work in ES6.
If you want to carry the analogy even further generators can also implement coroutine patterns, if you use yield as an expression (for communication) and yield from to do nested generators.