summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Early <aearly@fluid.com>2015-05-20 16:33:05 -0700
committerAlexander Early <aearly@fluid.com>2015-05-20 16:33:05 -0700
commite417af6c1e20374bb04468fe5a789fef701d0bec (patch)
tree9c040f4c90ecd86927035cd329fee130375c026b
parent29e7141e85c3d4029a5ce09402ff369d4419bbbf (diff)
downloadasync-e417af6c1e20374bb04468fe5a789fef701d0bec.tar.gz
guard against setImmediate mocking. Fixes #609 #611
-rw-r--r--lib/async.js15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/async.js b/lib/async.js
index bbb3495..1e76ee8 100644
--- a/lib/async.js
+++ b/lib/async.js
@@ -112,11 +112,18 @@
//// exported async module functions ////
//// nextTick implementation with browser-compatible fallback ////
+
+ // capture the global reference to guard against fakeTimer mocks
+ var _setImmediate;
+ if (typeof setImmediate === 'function') {
+ _setImmediate = setImmediate;
+ }
+
if (typeof process === 'undefined' || !(process.nextTick)) {
- if (typeof setImmediate === 'function') {
+ if (_setImmediate) {
async.nextTick = function (fn) {
// not a direct alias for IE10 compatibility
- setImmediate(fn);
+ _setImmediate(fn);
};
async.setImmediate = async.nextTick;
}
@@ -129,10 +136,10 @@
}
else {
async.nextTick = process.nextTick;
- if (typeof setImmediate !== 'undefined') {
+ if (_setImmediate) {
async.setImmediate = function (fn) {
// not a direct alias for IE10 compatibility
- setImmediate(fn);
+ _setImmediate(fn);
};
}
else {