diff --git a/src/Discord.Net/Net/Queue/RequestQueueBucket.cs b/src/Discord.Net/Net/Queue/RequestQueueBucket.cs index bfc7e2bb2..08bd1a388 100644 --- a/src/Discord.Net/Net/Queue/RequestQueueBucket.cs +++ b/src/Discord.Net/Net/Queue/RequestQueueBucket.cs @@ -1,6 +1,7 @@ #pragma warning disable CS4014 using System; using System.IO; +using System.Net; using System.Threading; using System.Threading.Tasks; @@ -68,6 +69,10 @@ namespace Discord.Net.Queue //We have all our semaphores, send the request return await request.SendAsync().ConfigureAwait(false); } + catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.BadGateway) + { + continue; + } catch (HttpRateLimitException ex) { Pause(ex.RetryAfterMilliseconds); diff --git a/src/Discord.Net/Net/Rest/DefaultRestClient.cs b/src/Discord.Net/Net/Rest/DefaultRestClient.cs index 3b133e615..43b405966 100644 --- a/src/Discord.Net/Net/Rest/DefaultRestClient.cs +++ b/src/Discord.Net/Net/Rest/DefaultRestClient.cs @@ -127,7 +127,8 @@ namespace Discord.Net.Rest if (statusCode == 429) { //TODO: Include bucket info - throw new HttpRateLimitException(int.Parse(response.Headers.GetValues("retry-after").First())); + int retryAfterMillis = int.Parse(response.Headers.GetValues("retry-after").First()); + throw new HttpRateLimitException(retryAfterMillis); } string reason = null;