@@ -222,22 +222,23 @@ export async function handler(
222222 logger . debug ( "STATUS: " + res . status + " " + res . statusText )
223223
224224 // Handle non-streaming response
225- if ( ! isStream ) {
225+ if ( ! isStream || res . status === 429 ) {
226226 const json = await res . json ( )
227- const usageInfo = providerInfo . normalizeUsage ( json . usage )
228- const costInfo = calculateCost ( modelInfo , usageInfo )
229- await trialLimiter ?. track ( usageInfo )
230227 await rateLimiter ?. track ( )
231- await trackUsage ( sessionId , billingSource , authInfo , modelInfo , providerInfo , usageInfo , costInfo )
232- await reload ( billingSource , authInfo , costInfo )
228+ if ( json . usage ) {
229+ const usageInfo = providerInfo . normalizeUsage ( json . usage )
230+ const costInfo = calculateCost ( modelInfo , usageInfo )
231+ await trialLimiter ?. track ( usageInfo )
232+ await trackUsage ( sessionId , billingSource , authInfo , modelInfo , providerInfo , usageInfo , costInfo )
233+ await reload ( billingSource , authInfo , costInfo )
234+ json . cost = calculateOccurredCost ( billingSource , costInfo )
235+ }
236+ if ( json . error ?. message ) {
237+ json . error . message = `Error from provider${ providerInfo . displayName ? ` (${ providerInfo . displayName } )` : "" } : ${ json . error . message } `
238+ }
233239
234240 const responseConverter = createResponseConverter ( providerInfo . format , opts . format )
235- const body = JSON . stringify (
236- responseConverter ( {
237- ...json ,
238- cost : calculateOccurredCost ( billingSource , costInfo ) ,
239- } ) ,
240- )
241+ const body = JSON . stringify ( responseConverter ( json ) )
241242 logger . metric ( { response_length : body . length } )
242243 logger . debug ( "RESPONSE: " + body )
243244 dataDumper ?. provideResponse ( body )
0 commit comments