Skip to content

Commit efc7e46

Browse files
authored
Check for Retry-After reposonse header when receiving 429 responses from the server (eclipse-openvsx#1637)
* fix: check for Retry-After reposonse header for rate limiting * add changelog entry
1 parent 671ef30 commit efc7e46

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

webui/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ This change log covers only the frontend library (webui) of Open VSX.
88

99
- Switch from webpack to vite for building the bundle ([#1399](https://github.com/eclipse/openvsx/pull/1399))
1010

11+
### Fixed
12+
13+
- Check `Retry-After` http header when receiving `429` responses from the server ([#1637](https://github.com/eclipse/openvsx/pull/1637))
14+
1115
## [v0.18.0] (Feb. 2026)
1216

1317
### Added

webui/src/server-request.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,11 @@ export async function sendRequest<Res>(req: ServerAPIRequest, retry: boolean = t
7373
throw new Error(`Unsupported type ${req.headers['Accept']}`);
7474
}
7575
} else if (response.status === 429) {
76-
const retrySeconds = response.headers.get('X-Rate-Limit-Retry-After-Seconds') ?? '0';
76+
// if the server uses the bucket4j starter config
77+
const retryAfterSeconds = response.headers.get('X-Rate-Limit-Retry-After-Seconds');
78+
// if the server uses the dynamic rate limiting config
79+
const retryAfter = response.headers.get('Retry-After');
80+
const retrySeconds = retryAfterSeconds ?? retryAfter ?? '0';
7781
const jitter = Math.floor(Math.random() * 100);
7882
const timeoutMillis = ((Number(retrySeconds) + 1) * 1000) + jitter;
7983
return new Promise<ServerAPIRequest>(resolve => setTimeout(resolve, timeoutMillis, req))

0 commit comments

Comments
 (0)