Skip to content

Commit b1831fe

Browse files
committed
events: simplify event target agnostic logic in on and once
PR-URL: #34997 Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Yongsheng Zhang <[email protected]>
1 parent c66e647 commit b1831fe

File tree

1 file changed

+10
-36
lines changed

1 file changed

+10
-36
lines changed

lib/events.js

+10-36
Original file line numberDiff line numberDiff line change
@@ -642,11 +642,7 @@ async function once(emitter, name, options = {}) {
642642
const errorListener = (err) => {
643643
emitter.removeListener(name, resolver);
644644
if (signal != null) {
645-
eventTargetAgnosticRemoveListener(
646-
signal,
647-
'abort',
648-
abortListener,
649-
{ once: true });
645+
eventTargetAgnosticRemoveListener(signal, 'abort', abortListener);
650646
}
651647
reject(err);
652648
};
@@ -655,38 +651,22 @@ async function once(emitter, name, options = {}) {
655651
emitter.removeListener('error', errorListener);
656652
}
657653
if (signal != null) {
658-
eventTargetAgnosticRemoveListener(
659-
signal,
660-
'abort',
661-
abortListener,
662-
{ once: true });
654+
eventTargetAgnosticRemoveListener(signal, 'abort', abortListener);
663655
}
664656
resolve(args);
665657
};
666658
eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
667-
if (name !== 'error') {
668-
addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
659+
if (name !== 'error' && typeof emitter.once === 'function') {
660+
emitter.once('error', errorListener);
669661
}
670662
function abortListener() {
671-
if (typeof emitter.removeListener === 'function') {
672-
emitter.removeListener(name, resolver);
673-
emitter.removeListener('error', errorListener);
674-
} else {
675-
eventTargetAgnosticRemoveListener(
676-
emitter,
677-
name,
678-
resolver,
679-
{ once: true });
680-
eventTargetAgnosticRemoveListener(
681-
emitter,
682-
'error',
683-
errorListener,
684-
{ once: true });
685-
}
663+
eventTargetAgnosticRemoveListener(emitter, name, resolver);
664+
eventTargetAgnosticRemoveListener(emitter, 'error', resolver);
686665
reject(lazyDOMException('The operation was aborted', 'AbortError'));
687666
}
688667
if (signal != null) {
689-
signal.addEventListener('abort', abortListener, { once: true });
668+
eventTargetAgnosticAddListener(
669+
signal, 'abort', abortListener, { once: true });
690670
}
691671
});
692672
}
@@ -698,12 +678,6 @@ function createIterResult(value, done) {
698678
return { value, done };
699679
}
700680

701-
function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
702-
if (typeof emitter.on === 'function') {
703-
eventTargetAgnosticAddListener(emitter, 'error', handler, flags);
704-
}
705-
}
706-
707681
function eventTargetAgnosticRemoveListener(emitter, name, listener, flags) {
708682
if (typeof emitter.removeListener === 'function') {
709683
emitter.removeListener(name, listener);
@@ -808,8 +782,8 @@ function on(emitter, event, options) {
808782
}, AsyncIteratorPrototype);
809783

810784
eventTargetAgnosticAddListener(emitter, event, eventHandler);
811-
if (event !== 'error') {
812-
addErrorHandlerIfEventEmitter(emitter, errorHandler);
785+
if (event !== 'error' && typeof emitter.on === 'function') {
786+
emitter.on('error', errorHandler);
813787
}
814788

815789
if (signal) {

0 commit comments

Comments
 (0)