|
1 | | -import { AbortError } from '@libp2p/interface/errors' |
| 1 | +import { AbortError, CodeError } from '@libp2p/interface/errors' |
2 | 2 | import { type Transport, type MultiaddrFilter, symbol, type CreateListenerOptions, type DialOptions, type Listener } from '@libp2p/interface/transport' |
3 | 3 | import { logger } from '@libp2p/logger' |
4 | 4 | import { multiaddrToUri as toUri } from '@multiformats/multiaddr-to-uri' |
@@ -55,19 +55,15 @@ class WebSockets implements Transport { |
55 | 55 | log('dialing %s:%s', cOpts.host, cOpts.port) |
56 | 56 |
|
57 | 57 | 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') |
59 | 64 | log.error('connection error:', err) |
60 | | - |
61 | 65 | 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 | + }) |
71 | 67 |
|
72 | 68 | if (options.signal == null) { |
73 | 69 | await Promise.race([rawSocket.connected(), errorPromise.promise]) |
|
0 commit comments