diff --git a/lib/events.js b/lib/events.js index 902b27544ba23a..c1343acbf31451 100644 --- a/lib/events.js +++ b/lib/events.js @@ -642,11 +642,7 @@ async function once(emitter, name, options = {}) { const errorListener = (err) => { emitter.removeListener(name, resolver); if (signal != null) { - eventTargetAgnosticRemoveListener( - signal, - 'abort', - abortListener, - { once: true }); + eventTargetAgnosticRemoveListener(signal, 'abort', abortListener); } reject(err); }; @@ -655,38 +651,22 @@ async function once(emitter, name, options = {}) { emitter.removeListener('error', errorListener); } if (signal != null) { - eventTargetAgnosticRemoveListener( - signal, - 'abort', - abortListener, - { once: true }); + eventTargetAgnosticRemoveListener(signal, 'abort', abortListener); } resolve(args); }; eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== 'error') { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); + if (name !== 'error' && typeof emitter.once === 'function') { + emitter.once('error', errorListener); } function abortListener() { - if (typeof emitter.removeListener === 'function') { - emitter.removeListener(name, resolver); - emitter.removeListener('error', errorListener); - } else { - eventTargetAgnosticRemoveListener( - emitter, - name, - resolver, - { once: true }); - eventTargetAgnosticRemoveListener( - emitter, - 'error', - errorListener, - { once: true }); - } + eventTargetAgnosticRemoveListener(emitter, name, resolver); + eventTargetAgnosticRemoveListener(emitter, 'error', resolver); reject(lazyDOMException('The operation was aborted', 'AbortError')); } if (signal != null) { - signal.addEventListener('abort', abortListener, { once: true }); + eventTargetAgnosticAddListener( + signal, 'abort', abortListener, { once: true }); } }); } @@ -698,12 +678,6 @@ function createIterResult(value, done) { return { value, done }; } -function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === 'function') { - eventTargetAgnosticAddListener(emitter, 'error', handler, flags); - } -} - function eventTargetAgnosticRemoveListener(emitter, name, listener, flags) { if (typeof emitter.removeListener === 'function') { emitter.removeListener(name, listener); @@ -808,8 +782,8 @@ function on(emitter, event, options) { }, AsyncIteratorPrototype); eventTargetAgnosticAddListener(emitter, event, eventHandler); - if (event !== 'error') { - addErrorHandlerIfEventEmitter(emitter, errorHandler); + if (event !== 'error' && typeof emitter.on === 'function') { + emitter.on('error', errorHandler); } if (signal) {