Lightweight scheduler for running arbitrary work on a dynamic interval. Ideal for backoff retry loops, background autosaves, and heartbeat polling. Ensures runs never overlap and supports adaptive delays, jitter, and full lifecycle controls.
- Non-overlapping runs (no reentrancy) with automatic rescheduling after each run
- Dynamic delay calculation via strategies (exponential, linear, constant, or custom)
- Jitter support to avoid thundering herds (none, full, or bounded ±percentage)
- Lifecycle controls: start, pause, resume, stop, runNow, resetBackoff