|
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