Skip to content

Commit 4e81296

Browse files
committed
check that waiting queue exists before calling forEach on it (jaredwray#69)
1 parent 785f99d commit 4e81296

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

Diff for: lib/callback_filler.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ CallbackFiller.prototype.fill = function(key, err, data) {
66
var waiting = this.queues[key];
77
delete this.queues[key];
88

9-
waiting.forEach(function(task) {
10-
(task.cb)(err, data);
11-
});
9+
if (waiting && waiting.length) {
10+
waiting.forEach(function(task) {
11+
(task.cb)(err, data);
12+
});
13+
}
1214
};
1315

1416
CallbackFiller.prototype.has = function(key) {

Diff for: test/caching.unit.js

+13
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,19 @@ describe("caching", function() {
515515
});
516516
});
517517

518+
context("when callback called twice by client", function() {
519+
it("it does not throw an error", function(done) {
520+
cache.wrap(key, function(cb) {
521+
methods.getWidget(name, cb);
522+
methods.getWidget(name, cb);
523+
}, opts, function(err, widget) {
524+
checkErr(err);
525+
assert.deepEqual(widget, {name: name});
526+
setTimeout(done, 10);
527+
});
528+
});
529+
});
530+
518531
it("lets us make nested calls", function(done) {
519532
function getCachedWidget(name, cb) {
520533
cache.wrap(key, function(cacheCb) {

0 commit comments

Comments
 (0)