"use strict"; module.exports = function generatorLoopSync(generator, callback = (value) => value) { let lastResult = { done: false }; let lastValue; while (lastResult.done === false) { lastResult = generator.next(lastValue); lastValue = (lastResult.done === false) ? callback(lastResult.value) : lastResult.value; } return lastValue; }; function* testGen() { let array = []; array.push(yield 1); array.push(yield 2); array.push(yield 3); return array; } let result = module.exports(testGen(), (number) => number * 2); console.log(result);