diff options
author | 2023-04-06 17:30:38 -0500 | |
---|---|---|
committer | 2023-04-06 17:34:32 -0500 | |
commit | f3d593c9bdeb163b556d292020669e2755580bc6 (patch) | |
tree | 5261e3de0544203bbb8deb25470e24156b5f5b3a /src/bun.js/builtins/cpp | |
parent | 671074ac8ad96b8c4b792b64adcfbdb14c59fd95 (diff) | |
download | bun-f3d593c9bdeb163b556d292020669e2755580bc6.tar.gz bun-f3d593c9bdeb163b556d292020669e2755580bc6.tar.zst bun-f3d593c9bdeb163b556d292020669e2755580bc6.zip |
fix(node:events): fix abort behavior
Diffstat (limited to 'src/bun.js/builtins/cpp')
-rw-r--r-- | src/bun.js/builtins/cpp/NodeEventsBuiltins.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/src/bun.js/builtins/cpp/NodeEventsBuiltins.cpp b/src/bun.js/builtins/cpp/NodeEventsBuiltins.cpp index c6f2b3895..dca0ee431 100644 --- a/src/bun.js/builtins/cpp/NodeEventsBuiltins.cpp +++ b/src/bun.js/builtins/cpp/NodeEventsBuiltins.cpp @@ -51,13 +51,13 @@ namespace WebCore { const JSC::ConstructAbility s_nodeEventsOnAsyncIteratorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; const JSC::ConstructorKind s_nodeEventsOnAsyncIteratorCodeConstructorKind = JSC::ConstructorKind::None; const JSC::ImplementationVisibility s_nodeEventsOnAsyncIteratorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_nodeEventsOnAsyncIteratorCodeLength = 4473; +const int s_nodeEventsOnAsyncIteratorCodeLength = 4455; static const JSC::Intrinsic s_nodeEventsOnAsyncIteratorCodeIntrinsic = JSC::NoIntrinsic; const char* const s_nodeEventsOnAsyncIteratorCode = "(function (emitter, event, options) {\n" \ " \"use strict\";\n" \ "\n" \ - " var { AbortSignal, Number, Error } = globalThis;\n" \ + " var { AbortSignal, Symbol, Number, Error } = globalThis;\n" \ "\n" \ " var AbortError = class AbortError extends Error {\n" \ " constructor(message = \"The operation was aborted\", options = void 0) {\n" \ @@ -74,14 +74,14 @@ const char* const s_nodeEventsOnAsyncIteratorCode = "\n" \ " if (@isUndefinedOrNull(emitter)) @throwTypeError(\"emitter is required\");\n" \ " //\n" \ - " if (!(typeof emitter === \"object\" && @isCallable(emitter.emit) && @isCallable(emitter.on)))\n" \ + " if (!(@isObject(emitter) && @isCallable(emitter.emit) && @isCallable(emitter.on)))\n" \ " @throwTypeError(\"emitter must be an EventEmitter\");\n" \ "\n" \ " if (@isUndefinedOrNull(options)) options = {};\n" \ "\n" \ " //\n" \ " var signal = options.signal;\n" \ - " if (!@isUndefinedOrNull(signal) && !(signal instanceof AbortSignal))\n" \ + " if (signal !== undefined && (!@isObject(signal) || !(signal instanceof AbortSignal)))\n" \ " @throwTypeError(\"options.signal must be an AbortSignal\");\n" \ "\n" \ " if (signal?.aborted) {\n" \ @@ -122,7 +122,7 @@ const char* const s_nodeEventsOnAsyncIteratorCode = " }\n" \ "\n" \ " function closeHandler() {\n" \ - " removeAllListeners(listeners);\n" \ + " removeAllListeners();\n" \ " finished = true;\n" \ " while (!unconsumedPromises.isEmpty()) {\n" \ " const promise = unconsumedPromises.shift();\n" \ @@ -199,19 +199,15 @@ const char* const s_nodeEventsOnAsyncIteratorCode = " }\n" \ " }\n" \ "\n" \ - " if (signal)\n" \ - " signal.once(\"abort\", abortListener);\n" \ + " if (signal) signal.addEventListener(\"abort\", abortListener, { once: true });\n" \ "\n" \ " var iterator = createIterator();\n" \ - "\n" \ " @Object.defineProperties(iterator, {\n" \ " return: {\n" \ - " value: function() {\n" \ - " return closeHandler();\n" \ - " },\n" \ + " value: () => closeHandler(),\n" \ " },\n" \ " throw: {\n" \ - " value: function(err) {\n" \ + " value: (err) => {\n" \ " if (!err || !(err instanceof Error)) {\n" \ " throw new TypeError(\"EventEmitter.AsyncIterator must be called with an error\");\n" \ " }\n" \ @@ -219,7 +215,7 @@ const char* const s_nodeEventsOnAsyncIteratorCode = " },\n" \ " },\n" \ " [Symbol.asyncIterator]: {\n" \ - " value: function() { return this; }\n" \ + " value: () => iterator,\n" \ " },\n" \ " });\n" \ " return iterator;\n" \ |