asyncWork is the same as async, except that it guarantees that the computation happens in a worker thread.