| // Utility function to simulate async/await through generators |
| function gen_async(generatorFunc) { |
| function continuer(verb, arg) { |
| var result; |
| try { |
| result = generator[verb](arg); |
| } catch (err) { |
| return Promise.reject(err); |
| } |
| if (result.done) { |
| return result.value; |
| } else { |
| return Promise.resolve(result.value).then(onFulfilled, onRejected); |
| } |
| } |
| var generator = generatorFunc(); |
| var onFulfilled = continuer.bind(continuer, "next"); |
| var onRejected = continuer.bind(continuer, "throw"); |
| return onFulfilled(); |
| } |