class Queue { constructor() { this.running = false; this.queue = []; } add(fn) { this.queue.push(fn); if (!this.running) this.next(); } next() { this.running = true; if (this.queue.length === 0) { this.running = false; return; } const fn = this.queue.shift(); Promise.resolve(fn()).then(() => this.next()); } } module.exports = Queue;