1. function spawn(genF) {
    2. return new Promise(function(resolve, reject) {
    3. const gen = genF();
    4. function step(nextF) {
    5. let next;
    6. } catch(e) {
    7. return reject(e);
    8. }
    9. if(next.done) {
    10. return resolve(next.value);
    11. }
    12. step(function() { return gen.next(v); });
    13. }, function(e) {
    14. step(function() { return gen.throw(e); });
    15. });
    16. }
    17. step(function() { return gen.next(undefined); });