refactor(client): Asynchronous rendering!

* Asynchronous can be used to check for prerequisites/errors before printing the template, preventing flashes of content before being fully ready.
* Update all the tests.