const repeat = (ms, steps) => new Promise(resolve => {
setTimeout(() => {
const nextStep =
steps.next()
if ( nextStep.done !== true ) {
repeat(ms, steps)
console.log(nextStep.value)
resolve()
}
}, ms)
})
function *generator() {
for(let i = 0; i < 10; i++)
yield i
}
const steps = generator()
repeat(500, steps)