Skip to content

Commit e441bb7

Browse files
committed
refine: tighten unknown-session handling to events only
The previous fix suppressed all messages for unregistered sessions. A command *response* arriving on an unknown session would indicate a real bug (we only send commands after createSession()) and should still throw so it isn't silently swallowed. Only CDP events (object.method is set) are safe to drop — they are fire-and-forget with no waiting caller.
1 parent 212fa25 commit e441bb7

1 file changed

Lines changed: 17 additions & 8 deletions

File tree

src/cdp/connection.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,24 @@ export default class Connection {
105105
if (!session) {
106106
const disposedDate = this._disposedSessions.get(object.sessionId);
107107
if (!disposedDate) {
108-
// This can happen when Chrome sends events on a new session (e.g. an
109-
// extension service worker) before our createSession() call has run —
110-
// a race between Target.attachToTarget's response and early CDP events.
111-
this.logger.warn(
112-
LogTag.Internal,
113-
`Got message for unknown session, ignoring`,
114-
{ sessionId: object.sessionId, method: object.method },
108+
if (object.method) {
109+
// Event (not a response) on an unregistered session. This can happen
110+
// when Chrome pushes events (e.g. Inspector.workerScriptLoaded) on a
111+
// new session before our createSession() call completes — a race
112+
// between Target.attachToTarget's response and early CDP events.
113+
// Safe to drop: events are fire-and-forget with no waiting caller.
114+
this.logger.warn(
115+
LogTag.Internal,
116+
`Got event for unknown session, ignoring`,
117+
{ sessionId: object.sessionId, method: object.method },
118+
);
119+
return;
120+
}
121+
// A command response on an unregistered session is a real bug — we
122+
// only send commands after createSession(), so this should never happen.
123+
throw new Error(
124+
`Unknown session id: ${object.sessionId} while processing response`,
115125
);
116-
return;
117126
} else {
118127
const secondsAgo = (Date.now() - disposedDate.getTime()) / 1000.0;
119128
this.logger.warn(

0 commit comments

Comments
 (0)