MCPcopy Create free account
hub / github.com/Effect-TS/effect / next

Function next

packages/effect/src/Stream.ts:11131–11161  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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 },

Callers 1

iterateFunction · 0.70

Calls 6

runForkFunction · 0.85
closeAndReportErrorFunction · 0.85
runPromiseFunction · 0.70
closeFunction · 0.70
nextMethod · 0.65
awaitMethod · 0.65

Tested by

no test coverage detected