A Worker is an object that takes requests in one thread and executes
them in another. For correctness reasons, it's important that a Worker
appear to allocate a different thread for each request -- it must be
possible to have an unlimited number of concurrently executing requests.