This method will exit as soon as the run loop has no input sources or timers, which isn't the desired behavior.

This should probably be done with a timer (or `-performSelector:afterDelay:`) instead.