Skip to content

Commit d557124

Browse files
committed
Implement .done() without bluebird
1 parent 7cde5b2 commit d557124

File tree

3 files changed

+32
-5
lines changed

3 files changed

+32
-5
lines changed

.eslintrc.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@
6868
"console": true,
6969
"exports": true,
7070
"module": true,
71+
"process": false,
7172
"Promise": false,
7273
"require": false,
74+
"setTimeout": false,
7375
"TextDecoder": false,
7476
"Uint8Array": false
7577
}

lib/promises.js

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
var _ = require("underscore");
2-
var bluebird = require("bluebird/js/release/promise")();
32

43
exports.defer = defer;
54
exports.extend = extend;
@@ -115,6 +114,33 @@ function forEachSeries(array, func) {
115114
* added.
116115
*/
117116
function toExternalPromise(promise) {
118-
// TODO: stop using bluebird.
119-
return bluebird.resolve(promise);
117+
var externalPromise = Promise.resolve(promise);
118+
119+
externalPromise.done = function(resolve, reject) {
120+
return promise.then(resolve, reject).catch(function(error) {
121+
if (isNode()) {
122+
var stack = error instanceof Error ? error.stack : error;
123+
process.stderr.write("Fatal " + stack + "\n");
124+
process.exit(2);
125+
} else {
126+
setTimeout(function() {
127+
throw error;
128+
}, 0);
129+
}
130+
});
131+
};
132+
133+
return externalPromise;
134+
}
135+
136+
/**
137+
* Detect whether we're running in node.js. This uses the same logic as in
138+
* bluebird for consistency with previous versions of Mammoth.
139+
*/
140+
function isNode() {
141+
if (typeof process === "undefined") {
142+
return false;
143+
}
144+
145+
return {}.toString.call(process).toLowerCase() === "[object process]";
120146
}

test/.eslintrc.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"globals": {
33
"__dirname": false,
44
"describe": false,
5-
"it": false,
6-
"setTimeout": false
5+
"it": false
76
}
87
}

0 commit comments

Comments
 (0)