We want to transparently support asynchronous workers in user applications.
These workers should use the async surface to poll for work, so that they are non-blocking.
When a worker retrieves work, how this work is executed will affect the performance of the application (async/concurrency vs thread vs process)
We want to provide a sensible default, allow explicit override, and maybe even autoselect based on performance.