public override Task<bool> ConnectAsync()
{
if (State != ChannelStateType.Closed)
throw new InvalidOperationException("Should be closed to connect.");
var tcs = _connectTcs = TaskFactory.Create<bool>();
_logger?.Info("Connect.");
SetState(ChannelStateType.Connecting);
_client = new NetClient(_netConfig);
_client.Start();
var hail = _client.CreateMessage();
if (string.IsNullOrEmpty(_token) == false)
hail.Write(_token);
_client.Connect(_remoteEndPoint, hail);
_clientThread = new Thread(ClientThreadWork);
_clientThread.Start();
return tcs.Task;
}