const queue = new ConcurrentQueue({ maxConcurrency: 2 }); let delay = (ms: number) => new Promise((resolve) => setTimeout(() => resolve(true), ms)); let log = async (ms: number, msg: string) => { await delay(ms); console.log(msg); return msg; }; let tasks: Task[] = [ async () => log(2000, "I'm (even later) task #1!"), async () => log(1000, "I'm (late) task #2!"), async () => log(300, "I'm task #3!"), async () => log(400, "I'm task #4!"), async () => log(200, "I'm task #5!"), async () => log(500, "I'm task #6!"), async () => log(50, "I'm task #7!"), async () => log(1, "I'm task #8!") ]; let results = await queue.run(tasks); console.log("Results: ", results);