aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/builtins/js/NodeEvents.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/builtins/js/NodeEvents.js')
-rw-r--r--src/bun.js/builtins/js/NodeEvents.js20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/bun.js/builtins/js/NodeEvents.js b/src/bun.js/builtins/js/NodeEvents.js
index 6c80f81c8..ded8d1af7 100644
--- a/src/bun.js/builtins/js/NodeEvents.js
+++ b/src/bun.js/builtins/js/NodeEvents.js
@@ -26,7 +26,7 @@
function onAsyncIterator(emitter, event, options) {
"use strict";
- var { AbortSignal, Number, Error } = globalThis;
+ var { AbortSignal, Symbol, Number, Error } = globalThis;
var AbortError = class AbortError extends Error {
constructor(message = "The operation was aborted", options = void 0) {
@@ -41,14 +41,14 @@ function onAsyncIterator(emitter, event, options) {
if (@isUndefinedOrNull(emitter)) @throwTypeError("emitter is required");
// TODO: Do a more accurate check
- if (!(typeof emitter === "object" && @isCallable(emitter.emit) && @isCallable(emitter.on)))
+ if (!(@isObject(emitter) && @isCallable(emitter.emit) && @isCallable(emitter.on)))
@throwTypeError("emitter must be an EventEmitter");
if (@isUndefinedOrNull(options)) options = {};
// Parameters validation
var signal = options.signal;
- if (!@isUndefinedOrNull(signal) && !(signal instanceof AbortSignal))
+ if (signal !== undefined && (!@isObject(signal) || !(signal instanceof AbortSignal)))
@throwTypeError("options.signal must be an AbortSignal");
if (signal?.aborted) {
@@ -89,7 +89,7 @@ function onAsyncIterator(emitter, event, options) {
}
function closeHandler() {
- removeAllListeners(listeners);
+ removeAllListeners();
finished = true;
while (!unconsumedPromises.isEmpty()) {
const promise = unconsumedPromises.shift();
@@ -166,19 +166,15 @@ function onAsyncIterator(emitter, event, options) {
}
}
- if (signal)
- signal.once("abort", abortListener);
+ if (signal) signal.addEventListener("abort", abortListener, { once: true });
var iterator = createIterator();
-
@Object.defineProperties(iterator, {
return: {
- value: function() {
- return closeHandler();
- },
+ value: () => closeHandler(),
},
throw: {
- value: function(err) {
+ value: (err) => {
if (!err || !(err instanceof Error)) {
throw new TypeError("EventEmitter.AsyncIterator must be called with an error");
}
@@ -186,7 +182,7 @@ function onAsyncIterator(emitter, event, options) {
},
},
[Symbol.asyncIterator]: {
- value: function() { return this; }
+ value: () => iterator,
},
});
return iterator;