Skip to content
This repository has been archived by the owner on Aug 31, 2021. It is now read-only.

Commit

Permalink
🐛 Fix #37 - use proper callback arrays for listeners
Browse files Browse the repository at this point in the history
Make sure we always set and clean up 'sent' listeners
  • Loading branch information
jpwilliams committed Aug 3, 2017
1 parent 4ddddf9 commit 22ec1d1
Showing 1 changed file with 10 additions and 11 deletions.
21 changes: 10 additions & 11 deletions lib/Request.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,19 @@ function RequestType (masterOptions) {
}

requestType.data = function onData (callback) {
requestType._emitter.on('data', callback)
requestType._dataCallbacks.push(callback)

return requestType
}

requestType.sent = function onSent (callback) {
// requestType._emitter.on('sent', callback)
requestType._sentCallbacks.push(callback)

return requestType
}

requestType.timeout = function onTimeout (callback) {
requestType._emitter.on('timeout', callback)
requestType._timeoutCallbacks.push(callback)

return requestType
}
Expand Down Expand Up @@ -222,10 +221,9 @@ function Request (base, type, options) {
if (type.options.expectReply) {
request._emitter.removeAllListeners(`data-${messageId}`)
request._emitter.removeAllListeners(`timeout-${messageId}`)
} else {
request._emitter.removeAllListeners(`sent-${messageId}`)
}

request._emitter.removeAllListeners(`sent-${messageId}`)
request._emitter.removeAllListeners(`error-${messageId}`)

if (err) return reject((err && err.message) || err)
Expand All @@ -250,14 +248,15 @@ function Request (base, type, options) {
})
} else {
request._emitter.once(`sent-${messageId}`, a => cleanUp(null, a))
type._sentCallbacks.forEach((callback) => {
request._emitter.once(`sent-${messageId}`, callback)
})
request._sentCallbacks.forEach((callback) => {
request._emitter.once(`sent-${messageId}`, callback)
})
}

type._sentCallbacks.forEach((callback) => {
request._emitter.once(`sent-${messageId}`, callback)
})
request._sentCallbacks.forEach((callback) => {
request._emitter.once(`sent-${messageId}`, callback)
})

request._emitter.on(`error-${messageId}`, cleanUp)
})
}
Expand Down

0 comments on commit 22ec1d1

Please sign in to comment.