public void HandleCompletedTask(Task completedTask) { if (completedTask == _timeoutTask) { _cluster.ThrowTimeoutException(_selector, _description); } _timeoutCancellationTokenSource.Cancel(); if (completedTask == _cancellationTaskCompletionSource.Task) { _cancellationToken.ThrowIfCancellationRequested(); } _descriptionChangedTask.GetAwaiter().GetResult(); // propagate exceptions }
public void WaitingForDescriptionToChange() { if (!_serverSelectionWaitQueueEntered) { _cluster.EnterServerSelectionWaitQueue(); _serverSelectionWaitQueueEntered = true; } var timeoutRemaining = _timeoutAt - DateTime.UtcNow; if (timeoutRemaining <= TimeSpan.Zero) { _cluster.ThrowTimeoutException(_selector, _description); } }