Skip to content

Commit 0ee29a9

Browse files
committed
fixup
1 parent fc717a8 commit 0ee29a9

File tree

1 file changed

+16
-24
lines changed

1 file changed

+16
-24
lines changed

lib/events.js

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,10 +1009,8 @@ function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
10091009
* @returns {AsyncIterator}
10101010
*/
10111011
function on(emitter, event, options) {
1012-
const queue = new FixedQueue();
1012+
let queue = new FixedQueue();
10131013
let resume = null;
1014-
let error = null;
1015-
let errored = false
10161014

10171015
const signal = options?.signal;
10181016
validateAbortSignal(signal, 'options.signal');
@@ -1033,48 +1031,42 @@ function on(emitter, event, options) {
10331031
{ once: true });
10341032
}
10351033

1036-
function errorHandler (err) {
1037-
error = err;
1038-
errored = true;
1039-
1034+
function push(val) {
10401035
if (resume) {
1041-
resume(Promise.reject(err));
1036+
resume(val);
10421037
resume = null;
1038+
} else {
1039+
queue.push(val);
10431040
}
10441041
}
10451042

1046-
function abortListener() {
1047-
errorHandler(new AbortError(undefined, { cause: signal?.reason }));
1043+
function errorHandler (err) {
1044+
if (queue) {
1045+
push(Promise.reject(err));
1046+
}
10481047
}
10491048

10501049
function eventHandler(...args) {
1051-
if (resume) {
1052-
resume(args);
1053-
resume = null;
1054-
} else {
1055-
queue.push(args);
1056-
}
1050+
push(args);
1051+
}
1052+
1053+
function abortListener() {
1054+
errorHandler(new AbortError(undefined, { cause: signal?.reason }));
10571055
}
10581056

10591057
return async function * () {
10601058
try {
10611059
while (true) {
10621060
while (!queue.isEmpty()) {
1063-
if (errored) {
1064-
throw error;
1065-
}
1066-
yield queue.shift();
1067-
}
1068-
1069-
if (errored) {
1070-
throw error;
1061+
yield await queue.shift();
10711062
}
10721063

10731064
yield await new Promise(resolve => {
10741065
resume = resolve;
10751066
});
10761067
}
10771068
} finally {
1069+
queue = null;
10781070
eventTargetAgnosticRemoveListener(emitter, event, eventHandler);
10791071
eventTargetAgnosticRemoveListener(emitter, 'error', errorHandler);
10801072
}

0 commit comments

Comments
 (0)