Skip to content

Commit 9e5ac07

Browse files
Merge pull request #34 from defunctzombie/old-node
Fix callbackify on old Node.js
2 parents a5a2f84 + eb824c7 commit 9e5ac07

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

Diff for: .airtap.yml

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
browsers:
22
- name: chrome
3-
version: 27..latest
3+
version:
4+
- 49 # last supported on XP (keep it so long as it's easy to support)
5+
- -1..latest
46
- name: firefox
5-
version: latest
7+
version:
8+
- 52 # extended support release
9+
- -1..latest
610
- name: safari
7-
version: latest
11+
version: -1..latest
812
- name: ie
913
version: 9..latest
1014
sauce_connect: true

Diff for: test/node/callbackify.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ var assert = require('assert');
88
var callbackify = require('../../').callbackify;
99
var execFile = require('child_process').execFile;
1010

11+
if (typeof Promise === 'undefined') {
12+
console.log('no global Promise found, skipping callbackify tests');
13+
return;
14+
}
15+
1116
var values = [
1217
'hello world',
1318
null,
@@ -72,7 +77,7 @@ if (typeof Symbol !== 'undefined') {
7277
assert.strictEqual(err.message, 'Promise was rejected with a falsy value');
7378
assert.strictEqual(err.reason, value);
7479
} else {
75-
assert.strictEqual(String(value).endsWith(err.message), true);
80+
assert.strictEqual(String(value).slice(-err.message.length), err.message);
7681
}
7782
} else {
7883
assert.strictEqual(err, value);
@@ -97,7 +102,7 @@ if (typeof Symbol !== 'undefined') {
97102
assert.strictEqual(err.message, 'Promise was rejected with a falsy value');
98103
assert.strictEqual(err.reason, value);
99104
} else {
100-
assert.strictEqual(String(value).endsWith(err.message), true);
105+
assert.strictEqual(String(value).slice(-err.message.length), err.message);
101106
}
102107
} else {
103108
assert.strictEqual(err, value);

Diff for: util.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -691,8 +691,8 @@ function callbackify(original) {
691691
// In true node style we process the callback on `nextTick` with all the
692692
// implications (stack, `uncaughtException`, `async_hooks`)
693693
original.apply(this, args)
694-
.then(function(ret) { process.nextTick(cb, null, ret) },
695-
function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });
694+
.then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },
695+
function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });
696696
}
697697

698698
Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));

0 commit comments

Comments
 (0)