Effect.gen(function* (_) {
const cache = yield* _(cacheSource);
const inCache = yield* _(cache.get(20), Effect.either);
if (Either.isRight(inCache)) {
yield* _(Console.info("Got a pokemon (cache)", inCache.right));
return;
}
const pokemon = yield* _(getPokemon(20));
yield* _(Console.info("Got a pokemon", pokemon));
yield* _(cache.set(20, pokemon));
})
.pipe(
Effect.catchTags({
PokemonClientError: (error) => Console.error(error.reason, error.error),
}),
Effect.repeat(
Schedule.recurs(5).pipe(Schedule.addDelay(() => Duration.millis(1000)))
),
Effect.runPromise
)
Effect.gen(function* (_) {
const cache = yield* _(cacheSource);
const inCache = yield* _(cache.get(20), Effect.either);
if (Either.isRight(inCache)) {
yield* _(Console.info("Got a pokemon (cache)", inCache.right));
return;
}
const pokemon = yield* _(getPokemon(20));
yield* _(Console.info("Got a pokemon", pokemon));
yield* _(cache.set(20, pokemon));
})
.pipe(
Effect.catchTags({
PokemonClientError: (error) => Console.error(error.reason, error.error),
}),
Effect.repeat(
Schedule.recurs(5).pipe(Schedule.addDelay(() => Duration.millis(1000)))
),
Effect.runPromise
)