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;
|