feat(WebSocket): support passthrough, correctly emit the error
event
#608
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.
Warning
Since WebSocket connections will now be established as-is if you haven't provided any interceptors, this is technically a breaking change despite fixing a bug.
Interceptors has a bug that it will always emit the
open
even on the WebSocket client, even when there are no interceptor set up for any connections (so the connection cannot physically be intercepted). This results in such connections pending forever.I'm fixing this here without breaking any previously established promises.
connection
listener on the interceptor is present;connection
listeners on the interceptors are present (previously, the connection would be OPEN and pend forever).Discoveries
error
event is NOT dispatched on non-configurable closure codes, even if those codes represent errors (e.g. data cannot be accepted).error
event is dispatched in cases like connection errors or abrupt connection closures.Roadmap
this.emit()
returnedfalse
)..close()
would dispatch anerror
event on non-configurable closure codes (that's not how WebSocket behave).