Push nearly everything into the thread, and make the completion async.