CdpFetchTransport.attachChildSession sends Fetch.enable through CriClient.send, which records every *.enable (with its sessionId) in enableCommands for reconnect replay. Nothing prunes an entry when its session detaches: the Fetch.disable filter in send() only removes the entry whose sessionId matches the disable call, and the transport's stop() sends a session-less Fetch.disable, so per-session entries live for the client's lifetime.
Before #34622 this only accrued service-worker sessions; now every OOPIF ever attached in a run adds an entry, and iframes attach far more often. On every websocket reconnect, _restoreState replays the full list, including enables aimed at long-dead sessions. Failures are soft (non-disconnect errors are debug-logged and don't abort restore), so the symptom is wasted sends, debug noise, and unbounded growth over a long proxy-off run — not breakage.
Fix direction
Listen for Target.detachedFromTarget in CriClient and drop enableCommands entries (and any queued commands) whose sessionId matches the detached session.
Out of scope for the HTTP/2 MVP — backlog.
CdpFetchTransport.attachChildSessionsendsFetch.enablethroughCriClient.send, which records every*.enable(with itssessionId) inenableCommandsfor reconnect replay. Nothing prunes an entry when its session detaches: theFetch.disablefilter insend()only removes the entry whosesessionIdmatches the disable call, and the transport'sstop()sends a session-lessFetch.disable, so per-session entries live for the client's lifetime.Before #34622 this only accrued service-worker sessions; now every OOPIF ever attached in a run adds an entry, and iframes attach far more often. On every websocket reconnect,
_restoreStatereplays the full list, including enables aimed at long-dead sessions. Failures are soft (non-disconnect errors are debug-logged and don't abort restore), so the symptom is wasted sends, debug noise, and unbounded growth over a long proxy-off run — not breakage.Fix direction
Listen for
Target.detachedFromTargetinCriClientand dropenableCommandsentries (and any queued commands) whosesessionIdmatches the detached session.Out of scope for the HTTP/2 MVP — backlog.