File tree Expand file tree Collapse file tree 1 file changed +11
-0
lines changed Expand file tree Collapse file tree 1 file changed +11
-0
lines changed Original file line number Diff line number Diff line change @@ -84,6 +84,13 @@ function lazyMessageChannel() {
84
84
}
85
85
86
86
const clearTimeoutRegistry = new SafeFinalizationRegistry ( clearTimeout ) ;
87
+ const finalizers = new SafeFinalizationRegistry ( ( signal ) => {
88
+ signal [ kDependantSignals ] . forEach ( ref => {
89
+ if ( ! ref . deref ( ) ) {
90
+ signal [ kDependantSignals ] . delete ( ref ) ;
91
+ }
92
+ } ) ;
93
+ } ) ;
87
94
const gcPersistentSignals = new SafeSet ( ) ;
88
95
89
96
const kAborted = Symbol ( 'kAborted' ) ;
@@ -235,13 +242,17 @@ class AbortSignal extends EventTarget {
235
242
}
236
243
const resultSignalWeakRef = new SafeWeakRef ( resultSignal ) ;
237
244
resultSignal [ kSourceSignals ] = new SafeSet ( ) ;
245
+
246
+
238
247
for ( let i = 0 ; i < signalsArray . length ; i ++ ) {
239
248
const signal = signalsArray [ i ] ;
249
+ finalizers . register ( resultSignal , signal ) ;
240
250
if ( signal . aborted ) {
241
251
abortSignal ( resultSignal , signal . reason ) ;
242
252
return resultSignal ;
243
253
}
244
254
signal [ kDependantSignals ] ??= new SafeSet ( ) ;
255
+
245
256
if ( ! signal [ kComposite ] ) {
246
257
resultSignal [ kSourceSignals ] . add ( new SafeWeakRef ( signal ) ) ;
247
258
signal [ kDependantSignals ] . add ( resultSignalWeakRef ) ;
You can’t perform that action at this time.
0 commit comments