diff --git a/Octokit/Http/ApiConnection.cs b/Octokit/Http/ApiConnection.cs index 9b1656f5..18991d3a 100644 --- a/Octokit/Http/ApiConnection.cs +++ b/Octokit/Http/ApiConnection.cs @@ -434,21 +434,22 @@ namespace Octokit /// Thrown when an API error occurs. public async Task GetQueuedOperation(Uri uri, CancellationToken cancellationToken) { - Ensure.ArgumentNotNull(uri, "uri"); - - var response = await Connection.GetResponse(uri, cancellationToken); - - if (response.HttpResponse.StatusCode == HttpStatusCode.Accepted) + while (true) { - return await GetQueuedOperation(uri, cancellationToken); - } + Ensure.ArgumentNotNull(uri, "uri"); - if (response.HttpResponse.StatusCode == HttpStatusCode.OK) - { - return response.Body; + var response = await Connection.GetResponse(uri, cancellationToken); + + switch (response.HttpResponse.StatusCode) + { + case HttpStatusCode.Accepted: + continue; + case HttpStatusCode.OK: + return response.Body; + } + + throw new ApiException("Queued Operations expect status codes of Accepted or OK.", response.HttpResponse.StatusCode); } - throw new ApiException("Queued Operations expect status codes of Accepted or OK.", - response.HttpResponse.StatusCode); } async Task> GetPage(