MCPcopy
hub / github.com/Effect-TS/effect / io

Function io

packages/effect/test/Schedule.test.ts:80–96  ·  view source on GitHub ↗
(ref: Ref.Ref<number>, latch: Deferred.Deferred<void, never>)

Source from the content-addressed store, hash-verified

78 it.effect("reset after some inactivity", () =>
79 Effect.gen(function*() {
80 const io = (ref: Ref.Ref<number>, latch: Deferred.Deferred<void, never>): Effect.Effect<void, string> => {
81 return Ref.updateAndGet(ref, (n) => n + 1).pipe(
82 Effect.flatMap((retries) => {
83 // The 5th retry will fail after 10 seconds to let the schedule reset
84 if (retries == 5) {
85 return Deferred.succeed(latch, void 0).pipe(
86 Effect.zipRight(io(ref, latch).pipe(Effect.delay("10 seconds")))
87 )
88 }
89 // The 10th retry will succeed, which is only possible if the schedule was reset
90 if (retries == 10) {
91 return Effect.void
92 }
93 return Effect.fail("Boom")
94 })
95 )
96 }
97 const schedule = Schedule.recurs(5).pipe(Schedule.resetAfter("5 seconds"))
98 const retriesCounter = yield* Ref.make(-1)
99 const latch = yield* Deferred.make<void>()

Callers 1

Schedule.test.tsFile · 0.85

Calls 2

pipeMethod · 0.65
failMethod · 0.65

Tested by

no test coverage detected