public async Task Connect(ClientOptions options) { if (!options.ConnectionOptions.Nodes.Any()) { throw new ClientSetupException("There are zero configured nodes, you should provide one"); } options.LogWriter?.WriteLine("Starting socket connection..."); var singleNode = options.ConnectionOptions.Nodes.Single(); _socket = new Socket(SocketType.Stream, ProtocolType.Tcp) { NoDelay = true }; if (options.ConfigureSocket != null) { options.ConfigureSocket(_socket); } await ConnectAsync(_socket, singleNode.Uri.Host, singleNode.Uri.Port).ConfigureAwait(false);; _stream = new NetworkStream(_socket, true); options.LogWriter?.WriteLine("Socket connection established."); }