fix: throw error when connecting to already-connected Protocol #1441
+109
−50
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #1405
Protocol.connect()now throws a descriptive error if called when already connected to a transport. This prevents silent overwrites that break concurrent HTTP sessions.Problem
When calling
connect()twice on the same Protocol instance, the second call would silently overwrite_transport, causing existing sessions to receiveAbortErroras responses get routed to the wrong transport.Solution
Add a guard at the start of
connect()that throws an informative error if_transportis already set. The error message suggests both options:close()before reconnectingThis follows the "fail fast" principle used by similar libraries (gRPC, Socket.io, tRPC).
Changes
packages/core/src/shared/protocol.ts: Add connected check with descriptive errorpackages/core/test/shared/protocolTransportHandling.test.ts: Update testsTesting