export function sequencer Promise>( fun: F ): F { let promiseChain: Promise = Promise.resolve() return (async(...args: any[]) => { const next = promiseChain.then(() => fun(...args)) promiseChain = next.catch(() => {}) return next }) }