BTW, maybe when Emacs is built with support for threads, timers should be run in a separate thread (so you could just call `thread-yield` to do what you want).