18 lines
415 B
JavaScript
18 lines
415 B
JavaScript
|
'use strict';
|
||
|
|
||
|
// TODO: Use rest/spread when targeting Node.js 6
|
||
|
|
||
|
module.exports = function (input) {
|
||
|
const args = Array.isArray(input) ? input : arguments;
|
||
|
|
||
|
if (args.length === 0) {
|
||
|
return Promise.reject(new Error('Expected at least one argument'));
|
||
|
}
|
||
|
|
||
|
return [].slice.call(args, 1).reduce((a, b) => {
|
||
|
return function () {
|
||
|
return Promise.resolve(a.apply(null, arguments)).then(b);
|
||
|
};
|
||
|
}, args[0]);
|
||
|
};
|