We could do that, but I thought it would easier to trace the flow of execution of the code if we didn't have to jump back to the main thread just to do things that we _would_ do right there in the worker if it were possible (like spawning new workers).

Also, I think it's used usefully at the end of the constructor in EventedChromeWorker. Whenever a new worker is created, it sets up a new log listener for that worker in the UI thread so that `console.log` will work.

I can refactor it away if the magic outweighs the benefits, though. Let me know.