diff --git a/lib/priorityQueue.js b/lib/priorityQueue.js
index <HASH>..<HASH> 100644
--- a/lib/priorityQueue.js
+++ b/lib/priorityQueue.js
@@ -28,6 +28,7 @@ import Heap from './internal/Heap';
 export default function(worker, concurrency) {
     // Start with a normal queue
     var q = queue(worker, concurrency);
+    var processingScheduled = false;
 
     q._tasks = new Heap();
 
@@ -55,7 +56,13 @@ export default function(worker, concurrency) {
             q._tasks.push(item);
         }
 
-        setImmediate(q.process);
+        if (!processingScheduled) {
+            processingScheduled = true;
+            setImmediate(() => {
+                processingScheduled = false;
+                q.process();
+            });
+        }
     };
 
     // Remove unshift function
priorityQueue: Prevent same tick setImmediate (#<I>)