1 | var _ = require('./_');
|
2 |
|
3 | module.exports = function (fn, self) {
|
4 | return function () {
|
5 | var args, cb, j;
|
6 | args = 2 <= arguments.length ?
|
7 | _.slice.call(arguments, 0, j = arguments.length - 1) :
|
8 | (j = 0, []), cb = arguments[j++];
|
9 |
|
10 | var isFn = _.isFunction(cb);
|
11 |
|
12 | if (!isFn) {
|
13 | args.push(cb);
|
14 | return fn.apply(self, args);
|
15 | }
|
16 |
|
17 | return fn.apply(self, args).then(function (val) {
|
18 | cb(null, val);
|
19 | })['catch'](cb);
|
20 | };
|
21 | };
|