Some comments
Connecting with timeout, better connection exceptions
Nicer relationships between client, server and connection
Unify name for logger
Log websocket connection attempts
Log connection configuration
Guard connection logging properly
Removed cruft
Extensive client refactoring and rework

Dotting Is, crossing Ts...

* much more sensible exception handling, specifically for IO errors
* working request aborts
* loads of cleanup
* some commenting
Some further client refactoring

* proper disconnect handling
* proper state synchronization
Extracted client requests into their own class
Comments and reordering
Logging
Comments
Logging