import { Awaitable } from 'justypes' export async function* filterAsync = Awaited>( iterable: Iterable | AsyncIterable , predicate: (element: Awaited, index: number) => Awaitable ): AsyncIterableIterator { let index = 0 for await (const element of iterable) { if (await predicate(element, index)) yield element as unknown as U index++ } }