export async function filter( arr: T[], iterator: (item: T) => Promise ) { const fail = Symbol("fail"); return ((await Promise.all( arr.map(async item => ((await iterator(item)) ? item : fail)) )).filter(i => i !== fail) as any) as Promise; } export const delay = (ms: number) => new Promise(res => setTimeout(res, ms));