summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/internal/setImmediate.js5
-rw-r--r--test/cargoQueue.js6
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/internal/setImmediate.js b/lib/internal/setImmediate.js
index 96d26d0..4ef39a0 100644
--- a/lib/internal/setImmediate.js
+++ b/lib/internal/setImmediate.js
@@ -1,6 +1,7 @@
'use strict';
/* istanbul ignore file */
+export var hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask;
export var hasSetImmediate = typeof setImmediate === 'function' && setImmediate;
export var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';
@@ -14,7 +15,9 @@ export function wrap(defer) {
var _defer;
-if (hasSetImmediate) {
+if (hasQueueMicrotask) {
+ _defer = queueMicrotask;
+} else if (hasSetImmediate) {
_defer = setImmediate;
} else if (hasNextTick) {
_defer = process.nextTick;
diff --git a/test/cargoQueue.js b/test/cargoQueue.js
index 46801c7..cebdaa4 100644
--- a/test/cargoQueue.js
+++ b/test/cargoQueue.js
@@ -76,12 +76,12 @@ describe('cargoQueue', () => {
var call_order = [];
var c = async.cargoQueue(worker.bind({ call_order }), 2, 2);
c.push(1);
- setImmediate(() => {
+ async.setImmediate(() => {
c.push(2);
- setImmediate(() => {
+ async.setImmediate(() => {
c.push(3);
c.push(4);
- setImmediate(() => {
+ async.setImmediate(() => {
c.push(5);
c.drain(() => {
expect(call_order).to.eql([