diff --git a/.airtap.yml b/.airtap.yml index 0b9528e..189773a 100644 --- a/.airtap.yml +++ b/.airtap.yml @@ -1,10 +1,14 @@ browsers: - name: chrome - version: 27..latest + version: + - 49 # last supported on XP (keep it so long as it's easy to support) + - -1..latest - name: firefox - version: latest + version: + - 52 # extended support release + - -1..latest - name: safari - version: latest + version: -1..latest - name: ie version: 9..latest sauce_connect: true diff --git a/test/node/callbackify.js b/test/node/callbackify.js index a3828ab..8da100a 100644 --- a/test/node/callbackify.js +++ b/test/node/callbackify.js @@ -8,6 +8,11 @@ var assert = require('assert'); var callbackify = require('../../').callbackify; var execFile = require('child_process').execFile; +if (typeof Promise === 'undefined') { + console.log('no global Promise found, skipping callbackify tests'); + return; +} + var values = [ 'hello world', null, @@ -72,7 +77,7 @@ if (typeof Symbol !== 'undefined') { assert.strictEqual(err.message, 'Promise was rejected with a falsy value'); assert.strictEqual(err.reason, value); } else { - assert.strictEqual(String(value).endsWith(err.message), true); + assert.strictEqual(String(value).slice(-err.message.length), err.message); } } else { assert.strictEqual(err, value); @@ -97,7 +102,7 @@ if (typeof Symbol !== 'undefined') { assert.strictEqual(err.message, 'Promise was rejected with a falsy value'); assert.strictEqual(err.reason, value); } else { - assert.strictEqual(String(value).endsWith(err.message), true); + assert.strictEqual(String(value).slice(-err.message.length), err.message); } } else { assert.strictEqual(err, value); diff --git a/util.js b/util.js index 4f25671..a6363b6 100644 --- a/util.js +++ b/util.js @@ -691,8 +691,8 @@ function callbackify(original) { // In true node style we process the callback on `nextTick` with all the // implications (stack, `uncaughtException`, `async_hooks`) original.apply(this, args) - .then(function(ret) { process.nextTick(cb, null, ret) }, - function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) }); + .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) }, + function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) }); } Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));