Fix OAuth error handling

fix(client): If logError/displayError/displayErrorUnsafe is called without an error, log an `Unexpected Error` & print a stack trace.

fix(client): Display `Service Unavailable` if the user visits `/oauth/sign(in|up)` and the OAuth server is unavailable.

fix(client): Ensure a down OAuth server does not cause an `undefined` error.

fixes #1344 
fixes #1399 



Update this to use the new promise conversion helper.