| 2068 | |
| 2069 | /** @internal */ |
| 2070 | export const scoped = <A, E, R>( |
| 2071 | effect: Effect.Effect<A, E, R> |
| 2072 | ): Channel.Channel<A, unknown, E, unknown, unknown, unknown, Exclude<R, Scope.Scope>> => |
| 2073 | unwrap( |
| 2074 | Effect.uninterruptibleMask((restore) => |
| 2075 | Effect.map(Scope.make(), (scope) => |
| 2076 | core.acquireReleaseOut( |
| 2077 | Effect.tapErrorCause( |
| 2078 | restore(Scope.extend(effect, scope)), |
| 2079 | (cause) => Scope.close(scope, Exit.failCause(cause)) |
| 2080 | ), |
| 2081 | (_, exit) => Scope.close(scope, exit) |
| 2082 | )) |
| 2083 | ) |
| 2084 | ) |
| 2085 | |
| 2086 | /** @internal */ |
| 2087 | export const scopedWith = <A, E, R>( |