Indeed, the repeat argument of run-with-idle-timer is only checked for nil-ness and otherwise ignored. I'd suggest to pass something like :repeat or t to that argument so that readers are less confused.