export type ResolveAfterPromise = { counter: () => void; promise: Promise; }; export const resolveAfter = function (timesUntilResolve: number): ResolveAfterPromise { let counter = null; let currentValue = 0; if (timesUntilResolve <= 0) { throw new Error('Resolve after requires a positive integer'); } const promise: Promise = new Promise((resolvePromise) => { counter = () => { if (++currentValue === timesUntilResolve) { resolvePromise(); } }; }); return { counter, promise }; };