Browse Source

Capture work function exceptions and fill callbacks accordingly

feature/nested-cache-fetch-fix
Alejandro Torrado 11 years ago
parent
commit
812c353a42
  1. 11
      lib/caching.js
  2. 14
      lib/multi_caching.js

11
lib/caching.js

@ -1,4 +1,6 @@
/*jshint maxcomplexity:15*/
var domain = require('domain');
var caching = function (args) {
args = args || {};
var self = {};
@ -60,7 +62,12 @@ var caching = function (args) {
} else if (result) {
fillCallbacks(null, result);
} else {
work(function (err, data) {
domain
.create()
.on('error', function(err){
fillCallbacks(err);
})
.bind(work)(function (err, data) {
if (err) {
fillCallbacks(err);
return;
@ -69,7 +76,7 @@ var caching = function (args) {
if (err && (!self.ignoreCacheErrors)) {
fillCallbacks(err);
} else {
fillCallbacks(null, data);
fillCallbacks(err, data);
}
});
});

14
lib/multi_caching.js

@ -1,4 +1,5 @@
var async = require('async');
var domain = require('domain');
/**
* Module that lets you specify a hierarchy of caches.
@ -75,9 +76,14 @@ var multi_caching = function (caches) {
fillCallbacks(err, result);
});
} else {
work(function (err, data) {
domain
.create()
.on('error', function(err){
fillCallbacks(err);
})
.bind(work)(function (err, data) {
if (err) {
fillCallbacks(err, null);
fillCallbacks(err, data);
return;
}
var opts = {
@ -86,11 +92,7 @@ var multi_caching = function (caches) {
ttl: ttl
};
set_in_multiple_caches(caches, opts, function (err) {
if (err) {
fillCallbacks(err);
} else {
fillCallbacks(null, data);
}
});
});
}

Loading…
Cancel
Save