Double yield ( yield-yield ) helps you to organize asynchronously written code by structuring it sequentially without need to wrap or change your existing code.
var superagent = require('superagent');
var o_o = require('yield-yield');
var fs = require('fs');
module.exports = o_o(function *() {
try {
var content = yield fs.readFile('/etc/hosts', { encoding: 'utf8'}, yield);
} catch (e) {
console.log('Unable to read file', e);
}
yield setTimeout(yield, 1000);
var response = yield superagent
.get('/api/pet')
.end(yield);
});