public virtual Response <T> WaitForCompletion <T>(UpdateStatus updateStatus, HasCompleted hasCompleted, Value <T> value, GetRawResponse getRawResponse, TimeSpan?suggestedInterval, CancellationToken cancellationToken) { while (true) { Response response = updateStatus(cancellationToken); if (hasCompleted()) { return(Response.FromValue(value(), getRawResponse())); } Thread.Sleep(_delayStrategy.GetNextDelay(response, suggestedInterval)); } }
public virtual async ValueTask <Response <T> > WaitForCompletionAsync <T>(UpdateStatusAsync updateStatusAsync, HasCompleted hasCompleted, Value <T> value, GetRawResponse getRawResponse, TimeSpan?suggestedInterval, CancellationToken cancellationToken) { while (true) { Response response = await updateStatusAsync(cancellationToken).ConfigureAwait(false); if (hasCompleted()) { return(Response.FromValue(value(), getRawResponse())); } await Task.Delay(_delayStrategy.GetNextDelay(response, suggestedInterval), cancellationToken).ConfigureAwait(false); } }