close method
Closes the connection
This method will never throw
Implementation
Future<void> close() async {
if (_sentClose) return;
_sentClose = true;
// TODO gracefully close the current handler!
try {
await _socket.execHandlerNoResponse(QuitHandler(), _timeout);
} catch (e) {}
_socket.close();
}