summaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/util/queueTask.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/idb-bridge/src/util/queueTask.ts')
-rw-r--r--packages/idb-bridge/src/util/queueTask.ts15
1 files changed, 14 insertions, 1 deletions
diff --git a/packages/idb-bridge/src/util/queueTask.ts b/packages/idb-bridge/src/util/queueTask.ts
index 53563ffd2..297602c67 100644
--- a/packages/idb-bridge/src/util/queueTask.ts
+++ b/packages/idb-bridge/src/util/queueTask.ts
@@ -15,7 +15,20 @@
*/
export function queueTask(fn: () => void) {
- setImmediate(fn);
+ let called = false;
+ const callFirst = () => {
+ if (called) {
+ return;
+ }
+ called = true;
+ fn();
+ };
+ // We must schedule both of these,
+ // since on node, there is no guarantee
+ // that a setImmediate function that is registered
+ // before a setTimeout function is called first.
+ setImmediate(callFirst);
+ setTimeout(callFirst, 0);
}
export default queueTask;