@@ -181,22 +181,30 @@ export class BetaMessageStream implements AsyncIterable<BetaMessageStreamEvent>
181
181
options ?: RequestOptions ,
182
182
) : Promise < void > {
183
183
const signal = options ?. signal ;
184
+ let abortHandler : ( ( ) => void ) | undefined ;
184
185
if ( signal ) {
185
186
if ( signal . aborted ) this . controller . abort ( ) ;
186
- signal . addEventListener ( 'abort' , ( ) => this . controller . abort ( ) ) ;
187
+ abortHandler = this . controller . abort . bind ( this . controller ) ;
188
+ signal . addEventListener ( 'abort' , abortHandler ) ;
187
189
}
188
- this . #beginRequest( ) ;
189
- const { response, data : stream } = await messages
190
- . create ( { ...params , stream : true } , { ...options , signal : this . controller . signal } )
191
- . withResponse ( ) ;
192
- this . _connected ( response ) ;
193
- for await ( const event of stream ) {
194
- this . #addStreamEvent( event ) ;
195
- }
196
- if ( stream . controller . signal ?. aborted ) {
197
- throw new APIUserAbortError ( ) ;
190
+ try {
191
+ this . #beginRequest( ) ;
192
+ const { response, data : stream } = await messages
193
+ . create ( { ...params , stream : true } , { ...options , signal : this . controller . signal } )
194
+ . withResponse ( ) ;
195
+ this . _connected ( response ) ;
196
+ for await ( const event of stream ) {
197
+ this . #addStreamEvent( event ) ;
198
+ }
199
+ if ( stream . controller . signal ?. aborted ) {
200
+ throw new APIUserAbortError ( ) ;
201
+ }
202
+ this . #endRequest( ) ;
203
+ } finally {
204
+ if ( signal && abortHandler ) {
205
+ signal . removeEventListener ( 'abort' , abortHandler ) ;
206
+ }
198
207
}
199
- this . #endRequest( ) ;
200
208
}
201
209
202
210
protected _connected ( response : Response | null ) {
@@ -497,20 +505,28 @@ export class BetaMessageStream implements AsyncIterable<BetaMessageStreamEvent>
497
505
options ?: RequestOptions ,
498
506
) : Promise < void > {
499
507
const signal = options ?. signal ;
508
+ let abortHandler : ( ( ) => void ) | undefined ;
500
509
if ( signal ) {
501
510
if ( signal . aborted ) this . controller . abort ( ) ;
502
- signal . addEventListener ( 'abort' , ( ) => this . controller . abort ( ) ) ;
511
+ abortHandler = this . controller . abort . bind ( this . controller ) ;
512
+ signal . addEventListener ( 'abort' , abortHandler ) ;
503
513
}
504
- this . #beginRequest( ) ;
505
- this . _connected ( null ) ;
506
- const stream = Stream . fromReadableStream < BetaMessageStreamEvent > ( readableStream , this . controller ) ;
507
- for await ( const event of stream ) {
508
- this . #addStreamEvent( event ) ;
509
- }
510
- if ( stream . controller . signal ?. aborted ) {
511
- throw new APIUserAbortError ( ) ;
514
+ try {
515
+ this . #beginRequest( ) ;
516
+ this . _connected ( null ) ;
517
+ const stream = Stream . fromReadableStream < BetaMessageStreamEvent > ( readableStream , this . controller ) ;
518
+ for await ( const event of stream ) {
519
+ this . #addStreamEvent( event ) ;
520
+ }
521
+ if ( stream . controller . signal ?. aborted ) {
522
+ throw new APIUserAbortError ( ) ;
523
+ }
524
+ this . #endRequest( ) ;
525
+ } finally {
526
+ if ( signal && abortHandler ) {
527
+ signal . removeEventListener ( 'abort' , abortHandler ) ;
528
+ }
512
529
}
513
- this . #endRequest( ) ;
514
530
}
515
531
516
532
/**
0 commit comments