undici
undici copied to clipboard
redirecting >11 times causes "MaxListenersExceededWarning"
Bug Description
Each redirect adds one terminated
listener to fetchParams and it's never removed.
Reproducible By
import { once } from 'events'
import { createServer } from 'http'
import { fetch } from 'undici'
let redirects = 0
const server = createServer((req, res) => {
if (redirects === 15) {
res.end('Okay goodbye')
return
}
res.writeHead(302, {
Location: `/${redirects++}`
})
res.end()
}).listen(0)
await once(server, 'listening')
const url = `http://localhost:${server.address().port}`
fetch(url, { redirect: 'follow' })
Expected Behavior
Logs & Screenshots
MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 terminated listeners added to [Fetch]. Use emitter.setMaxListeners() to increase limit