diff --git a/lib/caching.js b/lib/caching.js index b162837..7c69e0c 100644 --- a/lib/caching.js +++ b/lib/caching.js @@ -1,6 +1,5 @@ /** @module cacheManager/caching */ /*jshint maxcomplexity:15*/ -var domain = require('domain'); var CallbackFiller = require('./callback_filler'); /** @@ -92,7 +91,7 @@ var caching = function(args) { } var hasKey = callbackFiller.has(key); - callbackFiller.add(key, {cb: cb, domain: process.domain}); + callbackFiller.add(key, {cb: cb}); if (hasKey) { return; } self.store.get(key, options, function(err, result) { @@ -101,12 +100,7 @@ var caching = function(args) { } else if (self._isCacheableValue(result)) { callbackFiller.fill(key, null, result); } else { - domain - .create() - .on('error', function(err) { - callbackFiller.fill(key, err); - }) - .bind(work)(function(err, data) { + work(function(err, data) { if (err) { callbackFiller.fill(key, err); return; diff --git a/lib/callback_filler.js b/lib/callback_filler.js index 4914bf1..8bd874c 100644 --- a/lib/callback_filler.js +++ b/lib/callback_filler.js @@ -1,18 +1,13 @@ -var domain = require('domain'); - function CallbackFiller() { this.queues = {}; } CallbackFiller.prototype.fill = function(key, err, data) { - var self = this; - - var waiting = self.queues[key]; - delete self.queues[key]; + var waiting = this.queues[key]; + delete this.queues[key]; waiting.forEach(function(task) { - var taskDomain = task.domain || domain.create(); - taskDomain.bind(task.cb)(err, data); + (task.cb)(err, data); }); }; diff --git a/lib/multi_caching.js b/lib/multi_caching.js index 15dcfe0..1e94f3d 100644 --- a/lib/multi_caching.js +++ b/lib/multi_caching.js @@ -1,6 +1,5 @@ /** @module cacheManager/multiCaching */ var async = require('async'); -var domain = require('domain'); var CallbackFiller = require('./callback_filler'); /** @@ -218,7 +217,7 @@ var multiCaching = function(caches, options) { } var hasKey = callbackFiller.has(key); - callbackFiller.add(key, {cb: cb, domain: process.domain}); + callbackFiller.add(key, {cb: cb}); if (hasKey) { return; } getFromHighestPriorityCache(key, function(err, result, index) { @@ -232,14 +231,7 @@ var multiCaching = function(caches, options) { callbackFiller.fill(key, err, result); }); } else { - domain - .create() - .on('error', function(err) { - if (callbackFiller.has(key)) { - callbackFiller.fill(key, err); - } - }) - .bind(work)(function(err, data) { + work(function(err, data) { if (err) { return callbackFiller.fill(key, err); } diff --git a/test/caching.unit.js b/test/caching.unit.js index 67dfcbb..c3c11da 100644 --- a/test/caching.unit.js +++ b/test/caching.unit.js @@ -576,12 +576,20 @@ describe("caching", function() { fakeError = new Error(support.random.string()); }); - it("bubbles up that error", function(done) { + it("does not catch the error", function(done) { + var originalExceptionHandler = process.listeners('uncaughtException').pop(); + process.removeListener('uncaughtException', originalExceptionHandler); + + process.once('uncaughtException', function(err) { + process.on('uncaughtException', originalExceptionHandler); + assert.ok(err); + done(); + }); + cache.wrap(key, function() { throw fakeError; - }, function(err) { - assert.equal(err, fakeError); - done(); + }, function() { + done(new Error('Should not have caught error')); }); }); }); diff --git a/test/multi_caching.unit.js b/test/multi_caching.unit.js index 0bcc2fe..77ece21 100644 --- a/test/multi_caching.unit.js +++ b/test/multi_caching.unit.js @@ -926,12 +926,20 @@ describe("multiCaching", function() { fakeError = new Error(support.random.string()); }); - it("bubbles up that error", function(done) { + it("does not catch the error", function(done) { + var originalExceptionHandler = process.listeners('uncaughtException').pop(); + process.removeListener('uncaughtException', originalExceptionHandler); + + process.once('uncaughtException', function(err) { + process.on('uncaughtException', originalExceptionHandler); + assert.ok(err); + done(); + }); + multiCache.wrap(key, function() { throw fakeError; - }, ttl, function(err) { - assert.equal(err, fakeError); - done(); + }, function() { + done(new Error('Should not have caught error')); }); }); });