Skip to content

Commit 7827031

Browse files
authored
fix(fetch): raise AbortSignal max event listeners (#1910)
1 parent 9dceb21 commit 7827031

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

lib/fetch/request.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const { getGlobalOrigin } = require('./global')
2828
const { URLSerializer } = require('./dataURL')
2929
const { kHeadersList } = require('../core/symbols')
3030
const assert = require('assert')
31+
const { setMaxListeners, getEventListeners, defaultMaxListeners } = require('events')
3132

3233
let TransformStream = globalThis.TransformStream
3334

@@ -352,6 +353,11 @@ class Request {
352353
const abort = function () {
353354
acRef.deref()?.abort(this.reason)
354355
}
356+
357+
if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {
358+
setMaxListeners(100, signal)
359+
}
360+
355361
signal.addEventListener('abort', abort, { once: true })
356362
requestFinalizer.register(this, { signal, abort })
357363
}

test/fetch/issue-node-46525.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
'use strict'
2+
3+
const { once } = require('events')
4+
const { createServer } = require('http')
5+
const { test } = require('tap')
6+
const { fetch } = require('../..')
7+
8+
// https://github.com/nodejs/node/issues/46525
9+
test('No warning when reusing AbortController', async (t) => {
10+
function onWarning (error) {
11+
t.error(error, 'Got warning')
12+
}
13+
14+
const server = createServer((req, res) => res.end()).listen(0)
15+
16+
await once(server, 'listening')
17+
18+
process.on('warning', onWarning)
19+
t.teardown(() => {
20+
process.off('warning', onWarning)
21+
return server.close()
22+
})
23+
24+
const controller = new AbortController()
25+
for (let i = 0; i < 15; i++) {
26+
await fetch(`http://localhost:${server.address().port}`, { signal: controller.signal })
27+
}
28+
})

0 commit comments

Comments
 (0)