import { describe, expect, it } from "@effect/vitest" import { Duration, Effect, Exit, Scope } from "effect" import { TestClock } from "effect/testing" describe("Scope", () => { describe("parallel finalization", () => { it.effect("executes finalizers in parallel", () => Effect.gen(function*() { const scope = Scope.makeUnsafe("parallel") yield* Scope.addFinalizer(scope, Effect.sleep(Duration.seconds(1))) yield* Scope.addFinalizer(scope, Effect.sleep(Duration.seconds(1))) yield* Scope.addFinalizer(scope, Effect.sleep(Duration.seconds(1))) const fiber = yield* Effect.forkChild(Scope.close(scope, Exit.void), { startImmediately: true }) expect(fiber.pollUnsafe()).toBeUndefined() yield* TestClock.adjust(Duration.seconds(1)) expect(fiber.pollUnsafe()).toBeDefined() })) }) })