2 module.exports = asPromise;
\r
5 * Callback as used by {@link util.asPromise}.
\r
6 * @typedef asPromiseCallback
\r
8 * @param {Error|null} error Error, if any
\r
9 * @param {...*} params Additional arguments
\r
10 * @returns {undefined}
\r
14 * Returns a promise from a node-style callback function.
\r
16 * @param {asPromiseCallback} fn Function to call
\r
17 * @param {*} ctx Function context
\r
18 * @param {...*} params Function arguments
\r
19 * @returns {Promise<*>} Promisified function
\r
21 function asPromise(fn, ctx/*, varargs */) {
\r
22 var params = new Array(arguments.length - 1),
\r
26 while (index < arguments.length)
\r
27 params[offset++] = arguments[index++];
\r
28 return new Promise(function executor(resolve, reject) {
\r
29 params[offset] = function callback(err/*, varargs */) {
\r
35 var params = new Array(arguments.length - 1),
\r
37 while (offset < params.length)
\r
38 params[offset++] = arguments[offset];
\r
39 resolve.apply(null, params);
\r
44 fn.apply(ctx || null, params);
\r