MCPcopy Index your code
hub / github.com/nodejs/node / followCompositeSignal

Function followCompositeSignal

lib/internal/abort_controller.js:159–192  ·  view source on GitHub ↗
(signal)

Source from the content-addressed store, hash-verified

157}
158
159function followCompositeSignal(signal) {
160 if (signal[kFollowing] || signal[kAborted] || !signal[kSourceSignals]?.size) {
161 return;
162 }
163
164 const resultSignalWeakRef = signal[kResultSignalWeakRef] ??= new SafeWeakRef(signal);
165
166 for (const sourceSignalWeakRef of signal[kSourceSignals]) {
167 const sourceSignal = sourceSignalWeakRef.deref();
168 if (sourceSignal === undefined) {
169 signal[kSourceSignals].delete(sourceSignalWeakRef);
170 continue;
171 }
172
173 if (sourceSignal.aborted) {
174 abortSignal(signal, sourceSignal.reason);
175 return;
176 }
177
178 sourceSignal[kDependantSignals] ??= new SafeSet();
179 sourceSignal[kDependantSignals].add(resultSignalWeakRef);
180 dependantSignalsCleanupRegistry.register(signal, {
181 sourceSignalRef: sourceSignalWeakRef,
182 dependantSignalRef: resultSignalWeakRef,
183 sourceSignalsCleanupToken: sourceSignalWeakRef,
184 });
185 sourceSignalsCleanupRegistry.register(sourceSignal, {
186 sourceSignalRef: sourceSignalWeakRef,
187 composedSignalRef: resultSignalWeakRef,
188 }, sourceSignalWeakRef);
189 }
190
191 signal[kFollowing] = true;
192}
193
194// Because the AbortSignal timeout cannot be canceled, we don't want the
195// presence of the timer alone to keep the AbortSignal from being garbage

Callers 1

[kNewListener]Method · 0.85

Calls 4

abortSignalFunction · 0.85
deleteMethod · 0.65
addMethod · 0.65
registerMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…