Sometimes it's hard to assign responsibility to a specific event source for exiting when there's no more work to be done. So let's add exit-on-idle support where we exit when there are no more event sources.