MCPcopy Create free account
hub / github.com/openai/openai-node / retryRequest

Method retryRequest

src/client.ts:1051–1088  ·  view source on GitHub ↗
(
    options: FinalRequestOptions,
    retriesRemaining: number,
    requestLogID: string,
    responseHeaders?: Headers | undefined,
  )

Source from the content-addressed store, hash-verified

1049 }
1050
1051 private async retryRequest(
1052 options: FinalRequestOptions,
1053 retriesRemaining: number,
1054 requestLogID: string,
1055 responseHeaders?: Headers | undefined,
1056 ): Promise<APIResponseProps> {
1057 let timeoutMillis: number | undefined;
1058
1059 // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.
1060 const retryAfterMillisHeader = responseHeaders?.get('retry-after-ms');
1061 if (retryAfterMillisHeader) {
1062 const timeoutMs = parseFloat(retryAfterMillisHeader);
1063 if (!Number.isNaN(timeoutMs)) {
1064 timeoutMillis = timeoutMs;
1065 }
1066 }
1067
1068 // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
1069 const retryAfterHeader = responseHeaders?.get('retry-after');
1070 if (retryAfterHeader && !timeoutMillis) {
1071 const timeoutSeconds = parseFloat(retryAfterHeader);
1072 if (!Number.isNaN(timeoutSeconds)) {
1073 timeoutMillis = timeoutSeconds * 1000;
1074 } else {
1075 timeoutMillis = Date.parse(retryAfterHeader) - Date.now();
1076 }
1077 }
1078
1079 // If the API asks us to wait a certain amount of time, just do what it
1080 // says, but otherwise calculate a default
1081 if (timeoutMillis === undefined) {
1082 const maxRetries = options.maxRetries ?? this.maxRetries;
1083 timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);
1084 }
1085 await sleep(timeoutMillis);
1086
1087 return this.makeRequest(options, retriesRemaining - 1, requestLogID);
1088 }
1089
1090 private calculateDefaultRetryTimeoutMillis(retriesRemaining: number, maxRetries: number): number {
1091 const initialRetryDelay = 0.5;

Callers 1

makeRequestMethod · 0.95

Calls 5

makeRequestMethod · 0.95
sleepFunction · 0.90
getMethod · 0.80
parseMethod · 0.45

Tested by

no test coverage detected