Simplify error handler
This commit is contained in:
		
							parent
							
								
									9682a1dcea
								
							
						
					
					
						commit
						9ad8f9f025
					
				| 
						 | 
					@ -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 = ''
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue