With the servers being down (as of right now), this lead me to notice a possible code improvement can be made.
The improvement: Switch the Socket stuff from blocking to non-blocking operations (if possible).
How I noticed: When the game attempts to connect, the UI freezes as the UI thread gets blocked during Socket IO.
The reason I'm suggesting to do it as it causes Windows to mis-believe the program has hung (evident in Event Viewer).
There are some gotcha's within .NET's Async APIs (one of which is a full blown deadlock), but all the APIs are (by convention) marked with "Async" suffix and either have no return or returns a task like object (May just be Task/Task<T>, depends on Unity's .NET target)