import { go } from '@blackglory/go' import { assert } from '@blackglory/errors' export function takeAsync( iterable: AsyncIterable , count: number ): AsyncIterableIterator> { assert(Number.isInteger(count), 'The parameter count must be an integer') assert(count >=0, 'The parameter count must be greater than or equal to 0') return go(async function* () { if (count === 0) return for await (const element of iterable) { yield element count-- if (count === 0) break } }) }