-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Currently rate limited requests return these headers from coingecko api
< x-ratelimit-limit: 30
< x-ratelimit-remaining: 0
< x-ratelimit-reset: 2025-07-25 14:54:00 +0000but sdk only supports handling retry-after-ms and retry-after
// Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.
const retryAfterMillisHeader = responseHeaders?.get('retry-after-ms');
if (retryAfterMillisHeader) {
const timeoutMs = parseFloat(retryAfterMillisHeader);
if (!Number.isNaN(timeoutMs)) {
timeoutMillis = timeoutMs;
}
}
// About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
const retryAfterHeader = responseHeaders?.get('retry-after');
if (retryAfterHeader && !timeoutMillis) {
const timeoutSeconds = parseFloat(retryAfterHeader);
if (!Number.isNaN(timeoutSeconds)) {
timeoutMillis = timeoutSeconds * 1000;
} else {
timeoutMillis = Date.parse(retryAfterHeader) - Date.now();
}
}Solutions
- ping method should return 'retry-after' header
- coingecko api could calculate 'retry-after-ms' based on delta between now and
x-ratelimit-resetand include 'retry-after-ms' header - sdk could include handling 'x-ratelimit-reset' header (not sure if that's easy with stainless 🤷 )
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request