diff --git a/lib/request-wrapper.ts b/lib/request-wrapper.ts index f3bd3eb0b..b2c72983c 100644 --- a/lib/request-wrapper.ts +++ b/lib/request-wrapper.ts @@ -391,6 +391,7 @@ export class RequestWrapper { const config: rax.RetryConfig = { retry: 4, // 4 retries by default retryDelay: 1000, // 1000 ms (1 sec) initial delay + httpMethodsToRetry: ['GET', 'HEAD', 'OPTIONS', 'DELETE', 'PUT', 'POST'], instance: axiosInstance, backoffType: 'exponential', checkRetryAfter: true, // use Retry-After header first diff --git a/test/unit/retry.test.js b/test/unit/retry.test.js index 2cb0d00f8..bf5dd08ef 100644 --- a/test/unit/retry.test.js +++ b/test/unit/retry.test.js @@ -62,6 +62,19 @@ describe('Node Core retries', () => { scopes.forEach((s) => s.done()); }); + it('should retry after we call enableRetries with POST verb', async () => { + const scopes = [ + nock(url).post('/').reply(429, undefined), + nock(url).post('/').reply(200, 'retry success!'), + ]; + + parameters.options.method = 'POST'; + const result = await service.createRequest(parameters); + expect(result.result).toBe('retry success!'); + // ensure all mocks satisfied + scopes.forEach((s) => s.done()); + }); + it('should not retry more than `maxRetries`', async () => { const scopes = [ nock(url).get('/').reply(500, undefined),