◐ Shell
clean mode source ↗

lib: disable default memory leak warning for AbortSignal · nodejs/node@5aec513

@@ -12,22 +12,22 @@ const { setTimeout } = require('timers/promises');

1212

common.expectWarning({

1313

MaxListenersExceededWarning: [

1414

['Possible EventTarget memory leak detected. 3 foo listeners added to ' +

15-

'EventTarget. MaxListeners is 2. Use events.setMaxListeners() ' +

15+

'EventTarget. MaxListeners is 2. Use events.setMaxListeners() ' +

1616

'to increase limit'],

1717

['Possible EventTarget memory leak detected. 3 foo listeners added to ' +

18-

'[MessagePort [EventTarget]]. ' +

19-

'MaxListeners is 2. ' +

20-

'Use events.setMaxListeners() to increase ' +

18+

'[MessagePort [EventTarget]]. ' +

19+

'MaxListeners is 2. ' +

20+

'Use events.setMaxListeners() to increase ' +

2121

'limit'],

2222

['Possible EventTarget memory leak detected. 3 foo listeners added to ' +

23-

'[MessagePort [EventTarget]]. ' +

24-

'MaxListeners is 2. ' +

25-

'Use events.setMaxListeners() to increase ' +

23+

'[MessagePort [EventTarget]]. ' +

24+

'MaxListeners is 2. ' +

25+

'Use events.setMaxListeners() to increase ' +

2626

'limit'],

27-

['Possible EventTarget memory leak detected. 3 foo listeners added to ' +

28-

'[AbortSignal]. ' +

29-

'MaxListeners is 2. ' +

30-

'Use events.setMaxListeners() to increase ' +

27+

['Possible EventTarget memory leak detected. 2 foo listeners added to ' +

28+

'[AbortSignal]. ' +

29+

'MaxListeners is 1. ' +

30+

'Use events.setMaxListeners() to increase ' +

3131

'limit'],

3232

],

3333

});

@@ -65,13 +65,25 @@ common.expectWarning({

6565

mc.port1.addEventListener('foo', () => {});

6666

mc.port1.addEventListener('foo', () => {});

6767

mc.port1.addEventListener('foo', () => {});

68+

}

686970+

{

71+

// No warning emitted because AbortController ignores `EventEmitter.defaultMaxListeners`

72+

setMaxListeners(2);

6973

const ac = new AbortController();

7074

ac.signal.addEventListener('foo', () => {});

7175

ac.signal.addEventListener('foo', () => {});

7276

ac.signal.addEventListener('foo', () => {});

7377

}

747879+

{

80+

// Will still warn as `setMaxListeners` can still manually set a limit

81+

const ac = new AbortController();

82+

setMaxListeners(1, ac.signal);

83+

ac.signal.addEventListener('foo', () => {});

84+

ac.signal.addEventListener('foo', () => {});

85+

}

86+7587

{

7688

// It works for EventEmitters also

7789

const ee = new EventEmitter();