export function createPromiseQueue( items: T[], pGenerator: (item: T) => Promise ) { return () => items.reduce((prevP, item) => { return prevP.then(() => pGenerator(item)); }, Promise.resolve()); } export function execPromiseQueue( items: T[], pGenerator: (item: T) => Promise ) { return createPromiseQueue(items, pGenerator)(); }