Skip to content

Commit 3984198

Browse files
committed
Merge remote-tracking branch 'origin/master' into feat/sentry/ember
2 parents 565189f + 18db201 commit 3984198

File tree

5 files changed

+23
-9
lines changed

5 files changed

+23
-9
lines changed

packages/browser/src/transports/fetch.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,12 @@ export class FetchTransport extends BaseTransport {
5757

5858
if (status === Status.RateLimit) {
5959
const now = Date.now();
60-
this._disabledUntil = new Date(now + parseRetryAfterHeader(now, response.headers.get('Retry-After')));
60+
/**
61+
* "The name is case-insensitive."
62+
* https://developer.mozilla.org/en-US/docs/Web/API/Headers/get
63+
*/
64+
const retryAfterHeader = response.headers.get('Retry-After');
65+
this._disabledUntil = new Date(now + parseRetryAfterHeader(now, retryAfterHeader));
6166
logger.warn(`Too many requests, backing off till: ${this._disabledUntil}`);
6267
}
6368

packages/browser/src/transports/xhr.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@ export class XHRTransport extends BaseTransport {
4141

4242
if (status === Status.RateLimit) {
4343
const now = Date.now();
44-
this._disabledUntil = new Date(now + parseRetryAfterHeader(now, request.getResponseHeader('Retry-After')));
44+
/**
45+
* "The search for the header name is case-insensitive."
46+
* https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getResponseHeader
47+
*/
48+
const retryAfterHeader = request.getResponseHeader('Retry-After');
49+
this._disabledUntil = new Date(now + parseRetryAfterHeader(now, retryAfterHeader));
4550
logger.warn(`Too many requests, backing off till: ${this._disabledUntil}`);
4651
}
4752

packages/node/src/transports/base.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,13 @@ export abstract class BaseTransport implements Transport {
106106
} else {
107107
if (status === Status.RateLimit) {
108108
const now = Date.now();
109-
let header = res.headers ? res.headers['Retry-After'] : '';
110-
header = Array.isArray(header) ? header[0] : header;
111-
this._disabledUntil = new Date(now + parseRetryAfterHeader(now, header));
109+
/**
110+
* "Key-value pairs of header names and values. Header names are lower-cased."
111+
* https://nodejs.org/api/http.html#http_message_headers
112+
*/
113+
let retryAfterHeader = res.headers ? res.headers['retry-after'] : '';
114+
retryAfterHeader = (Array.isArray(retryAfterHeader) ? retryAfterHeader[0] : retryAfterHeader) as string;
115+
this._disabledUntil = new Date(now + parseRetryAfterHeader(now, retryAfterHeader));
112116
logger.warn(`Too many requests, backing off till: ${this._disabledUntil}`);
113117
}
114118

packages/node/test/transports/http.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@ describe('HTTPTransport', () => {
8787
}
8888
});
8989

90-
test('back-off using Retry-After header', async () => {
90+
test('back-off using retry-after header', async () => {
9191
const retryAfterSeconds = 10;
9292
mockReturnCode = 429;
9393
mockHeaders = {
94-
'Retry-After': retryAfterSeconds,
94+
'retry-after': retryAfterSeconds,
9595
};
9696
const transport = createTransport({ dsn });
9797

packages/node/test/transports/https.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ describe('HTTPSTransport', () => {
9393
}
9494
});
9595

96-
test('back-off using Retry-After header', async () => {
96+
test('back-off using retry-after header', async () => {
9797
const retryAfterSeconds = 10;
9898
mockReturnCode = 429;
9999
mockHeaders = {
100-
'Retry-After': retryAfterSeconds,
100+
'retry-after': retryAfterSeconds,
101101
};
102102
const transport = createTransport({ dsn });
103103

0 commit comments

Comments
 (0)