@@ -266,6 +266,64 @@ describe('retries', () => {
266
266
expect ( count ) . toEqual ( 3 ) ;
267
267
} ) ;
268
268
269
+ test ( 'omit retry count header' , async ( ) => {
270
+ let count = 0 ;
271
+ let capturedRequest : RequestInit | undefined ;
272
+ const testFetch = async ( url : RequestInfo , init : RequestInit = { } ) : Promise < Response > => {
273
+ count ++ ;
274
+ if ( count <= 2 ) {
275
+ return new Response ( undefined , {
276
+ status : 429 ,
277
+ headers : {
278
+ 'Retry-After' : '0.1' ,
279
+ } ,
280
+ } ) ;
281
+ }
282
+ capturedRequest = init ;
283
+ return new Response ( JSON . stringify ( { a : 1 } ) , { headers : { 'Content-Type' : 'application/json' } } ) ;
284
+ } ;
285
+ const client = new OpenAI ( { apiKey : 'My API Key' , fetch : testFetch , maxRetries : 4 } ) ;
286
+
287
+ expect (
288
+ await client . request ( {
289
+ path : '/foo' ,
290
+ method : 'get' ,
291
+ headers : { 'X-Stainless-Retry-Count' : null } ,
292
+ } ) ,
293
+ ) . toEqual ( { a : 1 } ) ;
294
+
295
+ expect ( capturedRequest ! . headers as Headers ) . not . toHaveProperty ( 'x-stainless-retry-count' ) ;
296
+ } ) ;
297
+
298
+ test ( 'overwrite retry count header' , async ( ) => {
299
+ let count = 0 ;
300
+ let capturedRequest : RequestInit | undefined ;
301
+ const testFetch = async ( url : RequestInfo , init : RequestInit = { } ) : Promise < Response > => {
302
+ count ++ ;
303
+ if ( count <= 2 ) {
304
+ return new Response ( undefined , {
305
+ status : 429 ,
306
+ headers : {
307
+ 'Retry-After' : '0.1' ,
308
+ } ,
309
+ } ) ;
310
+ }
311
+ capturedRequest = init ;
312
+ return new Response ( JSON . stringify ( { a : 1 } ) , { headers : { 'Content-Type' : 'application/json' } } ) ;
313
+ } ;
314
+ const client = new OpenAI ( { apiKey : 'My API Key' , fetch : testFetch , maxRetries : 4 } ) ;
315
+
316
+ expect (
317
+ await client . request ( {
318
+ path : '/foo' ,
319
+ method : 'get' ,
320
+ headers : { 'X-Stainless-Retry-Count' : '42' } ,
321
+ } ) ,
322
+ ) . toEqual ( { a : 1 } ) ;
323
+
324
+ expect ( ( capturedRequest ! . headers as Headers ) [ 'x-stainless-retry-count' ] ) . toBe ( '42' ) ;
325
+ } ) ;
326
+
269
327
test ( 'retry on 429 with retry-after' , async ( ) => {
270
328
let count = 0 ;
271
329
const testFetch = async ( url : RequestInfo , { signal } : RequestInit = { } ) : Promise < Response > => {
0 commit comments