private async Task ConnectAsync(Func <Task> connectAction, CancellationToken cancellationToken) { await Task.WhenAny(connectAction(), cancellationToken.AsAwaitable().ContinueWith(task => { if (!IsDisposed) { IsCancelled = true; Client.Dispose(); } })); ThrowIfCancelled(); }