function* controller (end) { while (end !== (yield)) {} } const end = Symbol() const it = controller(end) console.log(it.next()) // { value: undefined, done: false } console.log(it.next(end)) // { value: undefined, done: true } -> aborted