Iterate the run loop by a single step each time

CPU usage isn't really a concern in unit tests, and this minimizes delays (and race conditions related to waiting too long).