export type Task = (...args: T) => Promise; /** * Wrap an async function to wait for previous calls to complete first. */ export function taskQueue(task: Task): Task { let pending: Promise = Promise.resolve(); return (...args) => { const promise = pending.then(() => task(...args)); pending = promise.catch(() => {}); return promise; }; }