Skip to content
This repository has been archived by the owner on Jul 21, 2023. It is now read-only.

Commit

Permalink
chore: do not wrap raw socket error handler with a promise
Browse files Browse the repository at this point in the history
  • Loading branch information
vasco-santos committed Jan 14, 2021
1 parent cc0bbc7 commit c37d969
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 16 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
"mafmt": "^8.0.1",
"multiaddr": "^8.1.1",
"multiaddr-to-uri": "^6.0.0",
"p-defer": "^3.0.0",
"p-timeout": "^3.2.0"
},
"devDependencies": {
Expand Down
32 changes: 16 additions & 16 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const connect = require('it-ws/client')
const withIs = require('class-is')
const toUri = require('multiaddr-to-uri')
const { AbortError } = require('abortable-iterator')
const pDefer = require('p-defer')

const debug = require('debug')
const log = debug('libp2p:websockets')
Expand Down Expand Up @@ -65,25 +66,24 @@ class WebSockets {
const cOpts = ma.toOptions()
log('dialing %s:%s', cOpts.host, cOpts.port)

const rawSocket = connect(toUri(ma), Object.assign({ binary: true }, options))
const errorPromise = pDefer()
const errfn = (err) => {
const msg = `connection error: ${err.message}`
log.error(msg)

const errorPromise = new Promise((resolve, reject) => {
const errfn = (err) => {
const msg = `connection error: ${err.message}`
log.error(msg)
errorPromise.reject(err)
}

reject(err)
}
const rawSocket = connect(toUri(ma), Object.assign({ binary: true }, options))

if (rawSocket.socket.on) {
rawSocket.socket.on('error', errfn)
} else {
rawSocket.socket.onerror = errfn
}
})
if (rawSocket.socket.on) {
rawSocket.socket.on('error', errfn)
} else {
rawSocket.socket.onerror = errfn
}

if (!options.signal) {
await Promise.race([rawSocket.connected(), errorPromise])
await Promise.race([rawSocket.connected(), errorPromise.promise])

log('connected %s', ma)
return rawSocket
Expand All @@ -96,7 +96,7 @@ class WebSockets {
reject(new AbortError())
setTimeout(() => {
rawSocket.close()
}, 0)
}
}

// Already aborted?
Expand All @@ -105,7 +105,7 @@ class WebSockets {
})

try {
await Promise.race([abort, errorPromise, rawSocket.connected()])
await Promise.race([abort, errorPromise.promise, rawSocket.connected()])
} finally {
options.signal.removeEventListener('abort', onAbort)
}
Expand Down

0 comments on commit c37d969

Please sign in to comment.