(
channelDeferred: Deferred.Deferred<OutDone, OutErr>,
scopeDeferred: Deferred.Deferred<void>,
scope: Scope.Scope
)
| 1106 | scope: Scope.Scope |
| 1107 | ) => { |
| 1108 | const run = ( |
| 1109 | channelDeferred: Deferred.Deferred<OutDone, OutErr>, |
| 1110 | scopeDeferred: Deferred.Deferred<void>, |
| 1111 | scope: Scope.Scope |
| 1112 | ) => |
| 1113 | Effect.acquireUseRelease( |
| 1114 | Effect.sync(() => new ChannelExecutor(self, void 0, identity)), |
| 1115 | (exec) => |
| 1116 | Effect.suspend(() => |
| 1117 | runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec).pipe( |
| 1118 | Effect.intoDeferred(channelDeferred), |
| 1119 | Effect.zipRight(Deferred.await(channelDeferred)), |
| 1120 | Effect.zipLeft(Deferred.await(scopeDeferred)) |
| 1121 | ) |
| 1122 | ), |
| 1123 | (exec, exit) => { |
| 1124 | const finalize = exec.close(exit) |
| 1125 | if (finalize === undefined) { |
| 1126 | return Effect.void |
| 1127 | } |
| 1128 | return Effect.tapErrorCause( |
| 1129 | finalize, |
| 1130 | (cause) => Scope.addFinalizer(scope, Effect.failCause(cause)) |
| 1131 | ) |
| 1132 | } |
| 1133 | ) |
| 1134 | return Effect.uninterruptibleMask((restore) => |
| 1135 | Effect.all([ |
| 1136 | Scope.fork(scope, ExecutionStrategy.sequential), |
no test coverage detected