( iterable: AsyncIterable<A, D>, onError: (error: unknown) => E )
| 1865 | * @since 4.0.0 |
| 1866 | */ |
| 1867 | export const fromAsyncIterable = <A, D, E>( |
| 1868 | iterable: AsyncIterable<A, D>, |
| 1869 | onError: (error: unknown) => E |
| 1870 | ): Channel<A, E, D> => |
| 1871 | fromTransform(Effect.fnUntraced(function*(_, scope) { |
| 1872 | const iter = iterable[Symbol.asyncIterator]() |
| 1873 | if (iter.return) { |
| 1874 | yield* Scope.addFinalizer(scope, Effect.promise(() => iter.return!())) |
| 1875 | } |
| 1876 | return Effect.flatMap( |
| 1877 | Effect.tryPromise({ |
| 1878 | try: () => iter.next(), |
| 1879 | catch: onError |
| 1880 | }), |
| 1881 | (result) => result.done ? Cause.done(result.value) : Effect.succeed(result.value) |
| 1882 | ) |
| 1883 | })) |
| 1884 | |
| 1885 | /** |
| 1886 | * Creates a channel from an `AsyncIterable`, emitting each yielded value as a |
no test coverage detected