private async void connectProxyAsync(IProxy proxy, string user, string password)
        {
            try {
                Uri destinationUri = new Uri("http://" + _logic.UrlRequest.Host + ":" + _logic.UrlRequest.Port);
                var proxyServer    = await proxy.CreateProxyAsync(destinationUri);

                if (proxyServer == null)
                {
                    OpenConnectionToRemote();
                    return;
                }

                _logic.HasProxy = true;
                //create remote endpoint
                IPAddress add = IPAddress.Parse(proxyServer.Address.Host);
                //connect remote proxy endpoint
                await _client.ConnectAsync(add, proxyServer.Address.Port).ConfigureAwait(false);

                NetworkStream = _client.GetStream();
                var proxyRequest = _logic.ProxyRequest();
                NetworkStream.Write(proxyRequest, 0, proxyRequest.Length);
                await WaitForResponse(NetworkStream).ConfigureAwait(false);
            } catch (Exception E) {
                Console.WriteLine(E.Message);
            }
        }
        private async void connectProxyAsync(string proxyServer, int proxyPort, string user, string password)
        {
            try {
                //create remote endpoint
                IPAddress add = IPAddress.Parse(proxyServer);
                //connect remote proxy endpoint
                await _client.ConnectAsync(add, proxyPort).ConfigureAwait(false);

                NetworkStream = _client.GetStream();
                var proxyRequest = _logic.ProxyRequest();
                NetworkStream.Write(proxyRequest, 0, proxyRequest.Length);
                await WaitForResponse(NetworkStream).ConfigureAwait(false);
            } catch (Exception E) {
                Console.WriteLine(E.Message);
            }
        }