events: propagate abortsignal reason in new AbortError ctor in events
Signed-off-by: James M Snell <jasnell@gmail.com> PR-URL: https://github.com/nodejs/node/pull/41008 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
This commit is contained in:
parent
5401e96e5d
commit
c8a04049be
@ -810,7 +810,7 @@ async function once(emitter, name, options = {}) {
|
|||||||
const signal = options?.signal;
|
const signal = options?.signal;
|
||||||
validateAbortSignal(signal, 'options.signal');
|
validateAbortSignal(signal, 'options.signal');
|
||||||
if (signal?.aborted)
|
if (signal?.aborted)
|
||||||
throw new AbortError();
|
throw new AbortError(undefined, { cause: signal?.reason });
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const errorListener = (err) => {
|
const errorListener = (err) => {
|
||||||
emitter.removeListener(name, resolver);
|
emitter.removeListener(name, resolver);
|
||||||
@ -835,7 +835,7 @@ async function once(emitter, name, options = {}) {
|
|||||||
function abortListener() {
|
function abortListener() {
|
||||||
eventTargetAgnosticRemoveListener(emitter, name, resolver);
|
eventTargetAgnosticRemoveListener(emitter, name, resolver);
|
||||||
eventTargetAgnosticRemoveListener(emitter, 'error', errorListener);
|
eventTargetAgnosticRemoveListener(emitter, 'error', errorListener);
|
||||||
reject(new AbortError());
|
reject(new AbortError(undefined, { cause: signal?.reason }));
|
||||||
}
|
}
|
||||||
if (signal != null) {
|
if (signal != null) {
|
||||||
eventTargetAgnosticAddListener(
|
eventTargetAgnosticAddListener(
|
||||||
@ -888,7 +888,7 @@ function on(emitter, event, options) {
|
|||||||
const signal = options?.signal;
|
const signal = options?.signal;
|
||||||
validateAbortSignal(signal, 'options.signal');
|
validateAbortSignal(signal, 'options.signal');
|
||||||
if (signal?.aborted)
|
if (signal?.aborted)
|
||||||
throw new AbortError();
|
throw new AbortError(undefined, { cause: signal?.reason });
|
||||||
|
|
||||||
const unconsumedEvents = [];
|
const unconsumedEvents = [];
|
||||||
const unconsumedPromises = [];
|
const unconsumedPromises = [];
|
||||||
@ -976,7 +976,7 @@ function on(emitter, event, options) {
|
|||||||
return iterator;
|
return iterator;
|
||||||
|
|
||||||
function abortListener() {
|
function abortListener() {
|
||||||
errorHandler(new AbortError());
|
errorHandler(new AbortError(undefined, { cause: signal?.reason }));
|
||||||
}
|
}
|
||||||
|
|
||||||
function eventHandler(...args) {
|
function eventHandler(...args) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user