public async Task ConnectClientUnsuccessful()
 {
     var client1 = new TcpStreamClient();
     try
     {
         Assert.IsNull(client1.RemoteEndPoint);
         _serviceConnectedEvent.Reset();
         try
         {
             await client1.ConnectAsync("127.0.0.1", 9000);
         }
         catch (IOException)
         {
             Assert.IsNotNull(client1.RemoteEndPoint);
             Assert.IsFalse(client1.IsConnected);
             _serviceConnectedEvent.Wait(100);
             Assert.IsNull(_stub1);
             Assert.IsNull(_stub2);
             return;
         }
         Assert.Fail("expected IOException");
     }
     finally
     {
         client1.Dispose();
     }
 }
        public async Task ConnectClientsSuccessful()
        {
            var client1 = new TcpStreamClient();
            var client2 = new TcpStreamClient();
            try
            {
                Assert.IsFalse(client1.IsConnected);
                Assert.IsFalse(client2.IsConnected);
                Assert.IsNull(_stub1);
                Assert.IsNull(_stub2);

                _serviceConnectedEvent.Reset();
                await client1.ConnectAsync("127.0.0.1", _service.ListeningEndPoint.Port);
                Assert.IsTrue(client1.IsConnected);
                _serviceConnectedEvent.Wait(NormalTimeout);
                Assert.IsTrue(_stub1.IsConnected);
                Assert.IsNull(_stub2);

                _serviceConnectedEvent.Reset();
                await client2.ConnectAsync("127.0.0.1", _service.ListeningEndPoint.Port);
                Assert.IsTrue(client1.IsConnected);
                Assert.IsTrue(client2.IsConnected);
                Assert.IsTrue(_stub1.IsConnected);
                _serviceConnectedEvent.Wait(NormalTimeout);
                Assert.IsTrue(_stub2.IsConnected);
            }
            finally
            {
                client1.Dispose();
                client2.Dispose();
            }
        }