OptionallockoutOptionalnowClock override for tests. Defaults to performance.now.
OptionalonCalled with true when a run starts awaiting a promise and false once
it settles. Never called for synchronous handlers — an instant action
shouldn't flash a busy/disabled style.
Suppression window in ms after a run settles (for async handlers) or after the call (for sync handlers). Defaults to SINGLE_FLIGHT_LOCKOUT_MS.