Simplify error handler

This commit is contained in:
Webifi 2023-06-08 19:36:17 -05:00
parent 9682a1dcea
commit 9ad8f9f025
1 changed files with 15 additions and 18 deletions

View File

@ -48,6 +48,7 @@
import { ChatCompletionResponse } from './ChatCompletionResponse.svelte' import { ChatCompletionResponse } from './ChatCompletionResponse.svelte'
import { EventStreamContentType, fetchEventSource } from '@microsoft/fetch-event-source' import { EventStreamContentType, fetchEventSource } from '@microsoft/fetch-event-source'
import { getApiBase, getEndpointCompletions } from './ApiUtil.svelte' import { getApiBase, getEndpointCompletions } from './ApiUtil.svelte'
import type { ServerResponse } from 'http'
export let params = { chatId: '' } export let params = { chatId: '' }
const chatId: number = parseInt(params.chatId) const chatId: number = parseInt(params.chatId)
@ -387,6 +388,17 @@
signal signal
} }
const handleError = async (response) => {
let errorResponse
try {
const errObj = await response.json()
errorResponse = errObj?.error?.code || 'Unexpected Response'
} catch (e) {
errorResponse = 'Unknown Response'
}
throw new Error(`${response.status} - ${errorResponse}`)
}
// fetchEventSource doesn't seem to throw on abort, so... // fetchEventSource doesn't seem to throw on abort, so...
const abortListener = (e:Event) => { const abortListener = (e:Event) => {
controller = new AbortController() controller = new AbortController()
@ -431,14 +443,7 @@
// everything's good // everything's good
} else { } else {
// client-side errors are usually non-retriable: // client-side errors are usually non-retriable:
let errorResponse await handleError(response)
try {
const errObj = await response.json()
errorResponse = errObj?.error?.code || 'Unexpected Response'
} catch (e) {
errorResponse = 'Unknown Response'
}
throw new Error(`${response.status} - ${errorResponse}`)
} }
} }
}).catch(err => { }).catch(err => {
@ -447,18 +452,10 @@
}) })
} else { } else {
const response = await fetch(getApiBase() + getEndpointCompletions(), fetchOptions) const response = await fetch(getApiBase() + getEndpointCompletions(), fetchOptions)
const json = await response.json()
if (!response.ok) { if (!response.ok) {
// client-side errors are usually non-retriable: await handleError(response)
let errorResponse
try {
errorResponse = json?.error?.code || 'Unexpected Response'
} catch (e) {
errorResponse = 'Unknown Response'
}
throw new Error(`${response.status} - ${errorResponse}`)
} }
const json = await response.json()
// Remove updating indicator // Remove updating indicator
updating = false updating = false
updatingMessage = '' updatingMessage = ''