File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -28,6 +28,7 @@ const { getGlobalOrigin } = require('./global')
2828const { URLSerializer } = require ( './dataURL' )
2929const { kHeadersList } = require ( '../core/symbols' )
3030const assert = require ( 'assert' )
31+ const { setMaxListeners, getEventListeners, defaultMaxListeners } = require ( 'events' )
3132
3233let 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 }
Original file line number Diff line number Diff line change 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+ } )
You can’t perform that action at this time.
0 commit comments