export function asyncFilter(asyncIterable: AsyncIterable, predicate: (t: T) => Promise): AsyncIterable { return { async* [Symbol.asyncIterator]() { for await (const value of asyncIterable) { if (await predicate(value)) { yield value; } } } } } export async function asyncFind(asyncIterable: AsyncIterable, predicate: (t: T) => Promise): Promise { for await (const value of asyncIterable) { if (await predicate(value)) { return value; } } }