Sync with internal project:
 - bug fixes
 - make disconnect more robust
 - catch and report connection problems via new enum "ConnectStatus"
 - allow more graceful failing
 - more try/catch to not cause exceptions/crashes