@@ -71,42 +71,47 @@ export default class ChatGPTClient {
71
71
body : JSON . stringify ( modelOptions ) ,
72
72
} ;
73
73
if ( modelOptions . stream ) {
74
- return new Promise ( ( resolve , reject ) => {
74
+ return new Promise ( async ( resolve , reject ) => {
75
75
const controller = new AbortController ( ) ;
76
- fetchEventSource ( url , {
77
- ...opts ,
78
- signal : controller . signal ,
79
- onopen ( response ) {
80
- if ( response . status === 200 ) {
81
- return ;
82
- }
83
- if ( debug ) {
84
- console . debug ( response ) ;
85
- }
86
- throw new Error ( `Failed to send message. HTTP ${ response . status } - ${ response . statusText } ` ) ;
87
- } ,
88
- onclose ( ) {
89
- throw new Error ( `Failed to send message. Server closed the connection unexpectedly.` ) ;
90
- } ,
91
- onerror ( err ) {
92
- if ( debug ) {
93
- console . debug ( err ) ;
94
- }
95
- reject ( err ) ;
96
- } ,
97
- onmessage ( message ) {
98
- if ( debug ) {
99
- console . debug ( message ) ;
100
- }
101
- if ( message . data === '[DONE]' ) {
102
- onProgress ( '[DONE]' ) ;
103
- controller . abort ( ) ;
104
- resolve ( ) ;
105
- return ;
106
- }
107
- onProgress ( JSON . parse ( message . data ) ) ;
108
- } ,
109
- } ) ;
76
+ try {
77
+ await fetchEventSource ( url , {
78
+ ...opts ,
79
+ signal : controller . signal ,
80
+ onopen ( response ) {
81
+ if ( response . status === 200 ) {
82
+ return ;
83
+ }
84
+ if ( debug ) {
85
+ console . debug ( response ) ;
86
+ }
87
+ throw new Error ( `Failed to send message. HTTP ${ response . status } - ${ response . statusText } ` ) ;
88
+ } ,
89
+ onclose ( ) {
90
+ throw new Error ( `Failed to send message. Server closed the connection unexpectedly.` ) ;
91
+ } ,
92
+ onerror ( err ) {
93
+ if ( debug ) {
94
+ console . debug ( err ) ;
95
+ }
96
+ // rethrow to stop the operation
97
+ throw err ;
98
+ } ,
99
+ onmessage ( message ) {
100
+ if ( debug ) {
101
+ console . debug ( message ) ;
102
+ }
103
+ if ( message . data === '[DONE]' ) {
104
+ onProgress ( '[DONE]' ) ;
105
+ controller . abort ( ) ;
106
+ resolve ( ) ;
107
+ return ;
108
+ }
109
+ onProgress ( JSON . parse ( message . data ) ) ;
110
+ } ,
111
+ } ) ;
112
+ } catch ( err ) {
113
+ reject ( err ) ;
114
+ }
110
115
} ) ;
111
116
}
112
117
const response = await fetch ( url , opts ) ;
0 commit comments