Uses `reg.timeout` for clarity (triggered via "shadowing upvalue timer on line 13"), but keeps `reg.timer` for backward compatibility.