Skip to content

Commit 14ea8af

Browse files
committed
fix abort() to make sure all listeners are flushed
1 parent cfa4fed commit 14ea8af

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

index.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,28 @@ var pushable = require('pull-pushable')
33

44
module.exports = function () {
55
var listeners = []
6+
var closed = false
67

78
function notify (message) {
89
// notify by pushing to all listeners
910
for (var i = 0; i < listeners.length; i++) {
11+
if (closed) return message
1012
listeners[i].push(message)
1113
}
1214
return message
1315
}
1416

1517
notify.listen = function () {
1618
// create listener with `onClose` handler
17-
var listener = pushable(function onClose () {
18-
// if listener is found, delete from list
19-
var index = listeners.indexOf(listener)
20-
if (index !== -1) listeners.splice(index, 1)
21-
})
19+
var listener = pushable()
2220
listeners.push(listener)
2321
return listener
2422
}
2523

2624
notify.abort = function (err) {
2725
// abort by ending all listeners
28-
while (listeners.length) listeners[0].end(err)
26+
closed = true
27+
while (listeners.length) listeners.shift().end(err)
2928
}
3029

3130
notify.end = function () {

0 commit comments

Comments
 (0)