All the groundwork has been laid. Now we can finally update our server code to use async/await. The tricky part is figuring out how to perform the refactoring as a series of small, behavior-preserving steps... rather than just rewriting every function. This is particularly difficult with heavily-nested functions.