()
| 11129 | } |
| 11130 | return { |
| 11131 | async next(): Promise<IteratorResult<A>> { |
| 11132 | if (closePromise) return closePromise |
| 11133 | if (currentIter) { |
| 11134 | const next = currentIter.next() |
| 11135 | if (!next.done) return next |
| 11136 | currentIter = undefined |
| 11137 | } |
| 11138 | const fiber = runFork( |
| 11139 | pull ?? |
| 11140 | Effect.flatMap(Channel.toPullScoped(self.channel, scope), (nextPull) => { |
| 11141 | pull = nextPull |
| 11142 | return nextPull |
| 11143 | }) |
| 11144 | ) |
| 11145 | currentFiber = fiber |
| 11146 | const exit = await runPromise(Fiber.await(fiber)) |
| 11147 | if (currentFiber === fiber) { |
| 11148 | currentFiber = undefined |
| 11149 | } |
| 11150 | if (Exit.isSuccess(exit)) { |
| 11151 | currentIter = exit.value[Symbol.iterator]() |
| 11152 | return currentIter.next() |
| 11153 | } else if (Pull.isDoneCause(exit.cause)) { |
| 11154 | return close(Exit.void) |
| 11155 | } |
| 11156 | if (closePromise && Cause.hasInterruptsOnly(exit.cause)) { |
| 11157 | return closePromise |
| 11158 | } |
| 11159 | await closeAndReportError(exit) |
| 11160 | throw Cause.squash(exit.cause) |
| 11161 | }, |
| 11162 | return() { |
| 11163 | return close(Exit.void) |
| 11164 | }, |
no test coverage detected