test: fix test-abortsignal-drop-settled-signals flakiness · nodejs/node@8288f57
11// Flags: --expose_gc
22//
33import '../common/index.mjs';
4+import { gcUntil } from '../common/gc.js';
45import { describe, it } from 'node:test';
5667function makeSubsequentCalls(limit, done, holdReferences = false) {
@@ -141,37 +142,29 @@ it('drops settled dependant signals when signal is composite', (t, done) => {
141142);
142143143144setImmediate(() => {
144-global.gc();
145+global.gc({ execution: 'async' }).then(() => {
146+t.assert.strictEqual(composedSignalRef.deref(), undefined);
147+t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 2);
148+t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 1);
145149146-t.assert.strictEqual(composedSignalRef.deref(), undefined);
147-t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 2);
148-t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 1);
149-150-setImmediate(() => {
151-t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 0);
152-t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 0);
150+setImmediate(() => {
151+t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 0);
152+t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 0);
153153154-done();
154+done();
155+});
155156});
156157});
157158});
158159159160it('drops settled signals even when there are listeners', (t, done) => {
160-runWithOrphanListeners(limit, (signalRefs) => {
161-setImmediate(() => {
162-global.gc();
163-setImmediate(() => {
164-global.gc(); // One more call needed to clean up the deeper composed signals
165-setImmediate(() => {
166-global.gc(); // One more call needed to clean up the deeper composed signals
167-168-const unGCedSignals = [...signalRefs].filter((ref) => ref.deref());
169-170-t.assert.strictEqual(unGCedSignals.length, 0);
161+runWithOrphanListeners(limit, async (signalRefs) => {
162+await gcUntil('all signals are GCed', () => {
163+const unGCedSignals = [...signalRefs].filter((ref) => ref.deref());
171164172-done();
173-});
174-});
165+return unGCedSignals.length === 0;
175166});
167+168+done();
176169});
177170});