diff --git a/src/plugins.js b/src/plugins.js index c38a521ab2..2fe845a56c 100644 --- a/src/plugins.js +++ b/src/plugins.js @@ -155,26 +155,21 @@ var fs = require('fs'), var hookType = hook.split(':')[0]; switch (hookType) { case 'filter': - var returnVal = args; - - async.eachSeries(hookList, function(hookObj, next) { - if (hookObj[2]) { - _self.libraries[hookObj[0]][hookObj[1]](returnVal, function(err, afterVal) { - returnVal = afterVal; - next(err); - }); - } else { - returnVal = _self.libraries[hookObj[0]][hookObj[1]](returnVal); - next(); + async.reduce(hookList, args, function(value, hookObj, next) { + if (hookObj[2]) { // If a callback is present (asynchronous method) + _self.libraries[hookObj[0]][hookObj[1]](value, next); + } else { // Synchronous method + value = _self.libraries[hookObj[0]][hookObj[1]](value); + next(null, value); } - }, function(err) { + }, function(err, value) { if (err) { if (global.env === 'development') { winston.info('[plugins] Problem executing hook: ' + hook); } } - callback(err, returnVal); + callback.apply(plugins, arguments); }); break; case 'action': diff --git a/tests/categories.js b/tests/categories.js index 81d97c5f61..63be2f411d 100644 --- a/tests/categories.js +++ b/tests/categories.js @@ -15,7 +15,7 @@ describe('Categories', function() { order: '5' }, function(err, category) { categoryObj = category; - done.apply(arguments); + done.apply(this, arguments); }); }); });