Skip to content

Commit a1fbb7e

Browse files
authored
fix(@libp2p/websockets): do not throw error event (#1950)
The event listeners were set up to throw the first argument which is a WebSocket.ErrorEvent and not an error. The actual event doesn't really give us any useful information so just throw a generic error.
1 parent 5e85154 commit a1fbb7e

File tree

1 file changed

+8
-12
lines changed
  • packages/transport-websockets/src

1 file changed

+8
-12
lines changed

packages/transport-websockets/src/index.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AbortError } from '@libp2p/interface/errors'
1+
import { AbortError, CodeError } from '@libp2p/interface/errors'
22
import { type Transport, type MultiaddrFilter, symbol, type CreateListenerOptions, type DialOptions, type Listener } from '@libp2p/interface/transport'
33
import { logger } from '@libp2p/logger'
44
import { multiaddrToUri as toUri } from '@multiformats/multiaddr-to-uri'
@@ -55,19 +55,15 @@ class WebSockets implements Transport {
5555
log('dialing %s:%s', cOpts.host, cOpts.port)
5656

5757
const errorPromise = pDefer()
58-
const errfn = (err: any): void => {
58+
const rawSocket = connect(toUri(ma), this.init)
59+
rawSocket.socket.addEventListener('error', () => {
60+
// the WebSocket.ErrorEvent type doesn't actually give us any useful
61+
// information about what happened
62+
// https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/error_event
63+
const err = new CodeError(`Could not connect to ${ma.toString()}`, 'ERR_CONNECTION_FAILED')
5964
log.error('connection error:', err)
60-
6165
errorPromise.reject(err)
62-
}
63-
64-
const rawSocket = connect(toUri(ma), this.init)
65-
66-
if (rawSocket.socket.on != null) {
67-
rawSocket.socket.on('error', errfn)
68-
} else {
69-
rawSocket.socket.onerror = errfn
70-
}
66+
})
7167

7268
if (options.signal == null) {
7369
await Promise.race([rawSocket.connected(), errorPromise.promise])

0 commit comments

Comments
 (0)