@@ -3,8 +3,6 @@ import {fetchCached as fetch} from "./fetch.js";
33
44const { GITHUB_TOKEN } = process . env ;
55
6- let ratelimitReset ;
7-
86export async function fetchGithub ( path , options ) {
97 return ( await requestGithub ( path , options ) ) . body ;
108}
@@ -20,19 +18,18 @@ export async function requestGithub(
2018 let response ;
2119 let headers ;
2220 for ( let attempt = 0 , maxAttempts = 3 ; attempt < maxAttempts ; ++ attempt ) {
23- if ( ratelimitReset ) {
24- console . warn ( `x-ratelimit-reset ${ ratelimitReset } ` ) ;
25- const ratelimitDelay = new Date ( ratelimitReset * 1000 ) - Date . now ( ) ;
26- await new Promise ( ( resolve ) => setTimeout ( resolve , ratelimitDelay ) ) ;
27- ratelimitDelay = null ;
28- }
2921 response = await fetch ( url , { ...( authorization && { authorization} ) , accept} ) ;
30- headers = response . headers ;
31- if ( headers [ "x-ratelimit-remaining" ] === "0" ) ratelimitReset = headers [ "x-ratelimit-reset" ] ;
22+ headers = Object . fromEntries ( response . headers . entries ( ) ) ;
3223 if ( response . ok ) break ;
24+ if ( headers [ "x-ratelimit-remaining" ] === "0" ) {
25+ const ratelimitDelay = new Date ( headers [ "x-ratelimit-reset" ] * 1000 ) - Date . now ( ) ;
26+ console . warn ( `x-ratelimit-reset ${ headers [ "x-ratelimit-reset" ] } ` , ratelimitDelay ) ;
27+ await new Promise ( ( resolve ) => setTimeout ( resolve , ratelimitDelay ) ) ;
28+ continue ;
29+ }
3330 if ( headers [ "retry-after" ] ) {
34- console . warn ( ` retry-after ${ retryAfter } ` ) ;
35- const retryDelay = retryAfter * 1000 ;
31+ const retryDelay = headers [ " retry-after" ] * 1000 ;
32+ console . warn ( `retry-after ${ headers [ "retry-after" ] } ` , retryDelay ) ;
3633 await new Promise ( ( resolve ) => setTimeout ( resolve , retryDelay ) ) ;
3734 continue ;
3835 }
0 commit comments