24 lines
405 B
JavaScript
24 lines
405 B
JavaScript
var _ = require('lodash');
|
|
|
|
function failSafeAsync(fn) {
|
|
|
|
return function() {
|
|
|
|
var args = Array.prototype.slice.call(arguments);
|
|
|
|
var done = args[args.length - 1];
|
|
if (!done || !_.isFunction(done)) {
|
|
done = function(e) {
|
|
throw e;
|
|
};
|
|
}
|
|
|
|
try {
|
|
fn.apply(this, args);
|
|
} catch (e) {
|
|
done(e);
|
|
}
|
|
};
|
|
}
|
|
|
|
module.exports.failSafeAsync = failSafeAsync; |