From 16b45dbaa2e6eefb979127be4c4464675cb43e71 Mon Sep 17 00:00:00 2001 From: rmdm Date: Tue, 5 Mar 2019 21:07:33 +0300 Subject: [PATCH] fill not passed args with undefined and pass cb as the last one --- package.json | 2 +- promback.js | 17 ++++++++++++----- test/promback.spec.js | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 81d2fbe..86cbe9e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "promback", - "version": "1.0.0", + "version": "1.0.1", "description": "Level promises/callbacks landscape", "main": "promback.js", "scripts": { diff --git a/promback.js b/promback.js index 6354f60..bc278c2 100644 --- a/promback.js +++ b/promback.js @@ -16,14 +16,21 @@ function using (PromiseLib) { return new PromiseLib(function (resolve, reject) { - if (fn.length !== args.length + 1) { + const argsDiff = fn.length - args.length + + if (argsDiff <= 0) { return resolve(fn.apply(that, args)) } - fn.call(that, ... args, function (err, value) { - if (err) { return reject(err) } - resolve(value) - }) + fn.call( + that, + ... args, + ... new Array(argsDiff - 1), + function (err, value) { + if (err) { return reject(err) } + resolve(value) + } + ) }) } } diff --git a/test/promback.spec.js b/test/promback.spec.js index 89e49bc..42c11a0 100644 --- a/test/promback.spec.js +++ b/test/promback.spec.js @@ -148,6 +148,20 @@ function testUsing (contextTitle, promiseLib) { assert.strictEqual(result, undefined) }) + + it('passes cb as the last arg, when the function expects more args than passed', + async function () { + + function testFn (a, b, c, cb) { + cb(null, [ a, b, c ]) + } + + const fn = promback(testFn) + + const result = await fn(1) + + assert.deepStrictEqual(result, [ 1, undefined, undefined ]) + }) }) }) }