internal void EnsureConnected()
{
var task = Interlocked.CompareExchange( ref this._connectTask, null, null );
if ( task != null )
{
Interlocked.Exchange( ref this._transport, task.Result );
Interlocked.Exchange( ref this._connectTask, null );
task.Dispose();
}
}