API reference › @evolu/common › Schedule › untilScheduleInput
function untilScheduleInput<Input>(
predicate: Predicate<Input>,
): <Output>(schedule: Schedule<Output, Input>) => Schedule<Output, Input>;
Defined in: packages/common/src/Schedule.ts:1212
Continues until the input satisfies a predicate.
Stops (returns Err(Done<void>)) when Predicate returns true.
Useful for stopping retry on specific error conditions.
Stopping by input
import {
assertErr,
assertOk,
done,
exponential,
testCreateDeps,
untilScheduleInput,
type Typed,
} from "@evolu/common";
interface MyError extends Typed<"Transient" | "Fatal"> {}
// Stop retrying when an error is fatal.
const stopOnFatal = untilScheduleInput(
(error: MyError) => error.type === "Fatal",
)(exponential("100ms"));
const step = stopOnFatal(testCreateDeps());
assertOk(step({ type: "Transient" }), [100, 100]);
assertErr(step({ type: "Fatal" }), done());