Promise.coroutine(GeneratorFunction(…arguments) generatorFunction, Object options) -> function
When called, the coroutine function will start an instance of the generator and returns a promise for its final value.
Doing Promise.coroutine is almost like using the C# async keyword to mark the function, with yield working as the await keyword. Promises are somewhat like Tasks.
The async/await key words are already available in es2017 and node 8.
Reference
http://bluebirdjs.com/docs/api/promise.coroutine.html