function retry(fx, cb, checkFn) {
const left = createStore(10)
const fxData = restore(fx, {})
const shouldReturnFromRetry = combine(
(left, fxData) => !left || checkFn(fxData)
left.on(fx.finally, x => x - 1)
filter: shouldReturnFromRetry.map(s => !s),
filter: shouldReturnFromRetry,
const fetchUserReposFx = createEffect()
fetchUserReposFx.use(async _ => {
const req = await fetch('https://jsonplaceholder.typicode.com/todos/1')
const checkFn = fxData =>
fxData === 'OK' || fxData === 'ERROR' || 'id' in fxData
retry(fetchUserReposFx, console.log, checkFn)