Introduce a runloop
Introduce multiple queues, scheduleOnce
Tests and no scheduleOnce
remove scheduleonce
better test of throwing error
remove runloop innards