export async function* joinAsync( iterable: AsyncIterable , separator: U ): AsyncIterableIterator | U> { let first = true for await (const element of iterable) { if (first) { first = false } else { yield separator } yield element } }