Skip to content

Commit abf0477

Browse files
Lxxyxruyadorno
authored andcommitted
events: remove error listener on signal abort
Fixes: #36949 PR-URL: #36969 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent 4980cf7 commit abf0477

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

‎lib/events.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -736,7 +736,7 @@ async function once(emitter, name, options = {}) {
736736
}
737737
functionabortListener(){
738738
eventTargetAgnosticRemoveListener(emitter,name,resolver);
739-
eventTargetAgnosticRemoveListener(emitter,'error',resolver);
739+
eventTargetAgnosticRemoveListener(emitter,'error',errorListener);
740740
reject(lazyDOMException('The operation was aborted','AbortError'));
741741
}
742742
if(signal!=null){

‎test/parallel/test-events-once.js‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,19 @@ async function abortSignalAfterEvent() {
169169
awaitonce(ee,'foo',{signal: ac.signal});
170170
}
171171

172+
asyncfunctionabortSignalRemoveListener(){
173+
constee=newEventEmitter();
174+
constac=newAbortController();
175+
176+
try{
177+
process.nextTick(()=>ac.abort());
178+
awaitonce(ee,'test',{signal: ac.signal});
179+
}catch{
180+
strictEqual(ee.listeners('test').length,0);
181+
strictEqual(ee.listeners('error').length,0);
182+
}
183+
}
184+
172185
asyncfunctioneventTargetAbortSignalBefore(){
173186
constet=newEventTarget();
174187
constac=newAbortController();
@@ -218,6 +231,7 @@ Promise.all([
218231
abortSignalBefore(),
219232
abortSignalAfter(),
220233
abortSignalAfterEvent(),
234+
abortSignalRemoveListener(),
221235
eventTargetAbortSignalBefore(),
222236
eventTargetAbortSignalAfter(),
223237
eventTargetAbortSignalAfterEvent(),

0 commit comments

Comments
 (0)