diff --git a/lib/events.js b/lib/events.js index a306feea307ff4..81de870f0868ac 100644 --- a/lib/events.js +++ b/lib/events.js @@ -1012,6 +1012,7 @@ function on(emitter, event, options) { const queue = new FixedQueue(); let resume = null; let error = null; + let errored = false const signal = options?.signal; validateAbortSignal(signal, 'options.signal'); @@ -1034,6 +1035,8 @@ function on(emitter, event, options) { function errorHandler (err) { error = err; + errored = true; + if (resume) { resume(Promise.reject(err)); resume = null; @@ -1057,13 +1060,13 @@ function on(emitter, event, options) { try { while (true) { while (!queue.isEmpty()) { - if (error) { + if (errored) { throw error; } yield queue.shift(); } - if (error) { + if (errored) { throw error; }