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.");
        }