Running Asynchronous Finalizers Based on Execution Result

hi, how can i do something async on effect execution result. basically, i have finalizer which should run depending on the success and failure but asynchronously https://effect.website/play#72961514f17c

const doSomething = Effect.gen(function*() {
  yield* Effect.addFinalizer(Exit.matchEffect({
    onFailure: () => Effect.void,
    onSuccess: () =>
      Effect.gen(function*() {
        yield* Effect.sleep(4000)
        console.log("did something for 4s")
      })
  }))

  return Math.random()
})

const program = Effect.gen(function*() {
  return yield* doSomething
})

program.pipe(
  Effect.scoped,
  Effect.runPromise
).then(console.log)
image.png
Was this page helpful?