diff --git a/packages/effect/src/FiberHandle.ts b/packages/effect/src/FiberHandle.ts
index d9112671abf..e2eb3859832 100644
--- a/packages/effect/src/FiberHandle.ts
+++ b/packages/effect/src/FiberHandle.ts
@@ -313,10 +313,12 @@ export const clear = (self: FiberHandle): Effect.Effect =>
if (self.state._tag === "Closed" || self.state.fiber === undefined) {
return Effect.void
}
+ const target = self.state.fiber
+
return Effect.zipRight(
- restore(Fiber.interruptAs(self.state.fiber, FiberId.combine(fiber.id(), internalFiberId))),
+ restore(Fiber.interruptAs(target, FiberId.combine(fiber.id(), internalFiberId))),
Effect.sync(() => {
- if (self.state._tag === "Open") {
+ if (self.state._tag === "Open" && self.state.fiber === target) {
self.state.fiber = undefined
}
})