import * as Effect from "@effect/io/Effect"
import * as Duration from "@effect/data/Duration"
import * as Clock from "@effect/io/Clock"
import * as Either from "@effect/data/Either"
import * as clock from "@effect/io/internal_effect_untraced/clock"
function clockSleep(duration: Duration.Duration): Effect.Effect<never, never, void> {
return Effect.asyncInterruptEither<never, never, void>((cb) => {
const globalClockScheduler = ((clock as any).globalClockScheduler as Clock.ClockScheduler)
const canceler = globalClockScheduler.unsafeSchedule(() => cb(Effect.unit()), duration)
return Either.left(Effect.asUnit(Effect.sync(canceler)))
})
}
function sleep(duration: Duration.Duration) {
return clockSleep(duration)
}
function delay<R, E, A>(duration: Duration.Duration, self: Effect.Effect<R, E, A>) {
return Effect.zipRight(sleep(duration), self)
}
import * as Effect from "@effect/io/Effect"
import * as Duration from "@effect/data/Duration"
import * as Clock from "@effect/io/Clock"
import * as Either from "@effect/data/Either"
import * as clock from "@effect/io/internal_effect_untraced/clock"
function clockSleep(duration: Duration.Duration): Effect.Effect<never, never, void> {
return Effect.asyncInterruptEither<never, never, void>((cb) => {
const globalClockScheduler = ((clock as any).globalClockScheduler as Clock.ClockScheduler)
const canceler = globalClockScheduler.unsafeSchedule(() => cb(Effect.unit()), duration)
return Either.left(Effect.asUnit(Effect.sync(canceler)))
})
}
function sleep(duration: Duration.Duration) {
return clockSleep(duration)
}
function delay<R, E, A>(duration: Duration.Duration, self: Effect.Effect<R, E, A>) {
return Effect.zipRight(sleep(duration), self)
}