Skip to content

Commit

Permalink
fix(headers): Add support for case-insensitive http response headers (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
jstoffan authored Feb 12, 2021
1 parent 95dd3f3 commit 5ec964e
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 20 deletions.
5 changes: 3 additions & 2 deletions src/lib/Preview.js
Original file line number Diff line number Diff line change
Expand Up @@ -1467,8 +1467,9 @@ class Preview extends EventEmitter {

// Respect 'Retry-After' header if present, otherwise retry full jitter
let timeoutMs = Math.random() * (2 ** this.retryCount * MS_IN_S);
if (err.headers) {
const retryAfterS = parseInt(err.headers.get('Retry-After'), 10);
if (err.headers && err.headers.get) {
const retryAfter = err.headers.get('retry-after') || err.headers.get('Retry-After');
const retryAfterS = parseInt(retryAfter, 10);
if (!Number.isNaN(retryAfterS)) {
timeoutMs = retryAfterS * MS_IN_S;
}
Expand Down
39 changes: 21 additions & 18 deletions src/lib/__tests__/Preview-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2168,27 +2168,30 @@ describe('lib/Preview', () => {
expect(stubs.load).toBeCalled();
});

test('should retry after length specified in Retry-After header if set', () => {
preview.file = {
id: '0',
};
stubs.error.headers = {
get: sandbox
.stub()
.withArgs('Retry-After')
.returns(5),
};
preview.open = true;
preview.retryCount = 1;
test.each(['retry-after', 'Retry-After'])(
'should retry after length specified in %s header if set',
retryAfter => {
preview.file = {
id: '0',
};
stubs.error.headers = {
get: sandbox
.stub()
.withArgs(retryAfter)
.returns(5),
};
preview.open = true;
preview.retryCount = 1;

preview.handleFetchError(stubs.error);
preview.handleFetchError(stubs.error);

jest.advanceTimersByTime(4000);
expect(stubs.load).not.toBeCalled();
jest.advanceTimersByTime(4000);
expect(stubs.load).not.toBeCalled();

jest.advanceTimersByTime(5001);
expect(stubs.load).toBeCalled();
});
jest.advanceTimersByTime(5001);
expect(stubs.load).toBeCalled();
},
);
});

describe('triggerError()', () => {
Expand Down

0 comments on commit 5ec964e

Please sign in to comment.