Do the actual reading of the reply on the worker thread.  Otherwise, when we
read from the cache, we're reading synchronously from a file.  Closes #2171.