UNPKG

tc39-weakrefs-shim

Version:
53 lines 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function makeTaskQueue(register, letCallbackErrorsBubble = false) { const queue = new Array(1); function set(callback, ...args) { const queueId = queue.length; queue[queueId] = { callback, args }; let error; try { if (!register(queueId)) error = new Error("Failed to register task"); } catch (err) { error = err; } if (error) { delete queue[queueId]; throw error; } return queueId; } function clear(queueId) { delete queue[queueId]; } function processBubble(queueId) { if (!(queueId in queue)) return; const { callback, args } = queue[queueId]; delete queue[queueId]; callback(...args); } function processCatch(queueId) { if (!(queueId in queue)) return; const { callback, args } = queue[queueId]; delete queue[queueId]; try { callback(...args); } catch (err) { setTimeout(() => { throw err; }, 0); } } return { set, clear, process: letCallbackErrorsBubble ? processBubble : processCatch, }; } exports.default = makeTaskQueue; //# sourceMappingURL=taskQueue.js.map