@@ -93,28 +93,32 @@ export class AsyncIterableQueue<T> implements AsyncIterable<T> {
9393 * @param cb 終端が読み取られた後に呼ばれるコールバック関数
9494 */
9595 end ( cb ?: NoParameterCallback ) : Promise < void > {
96- const state = this . #state
97- if ( state )
98- throw new Error ( state )
99- this . #state = 'ending'
100- return new Promise ( ( resolve : Resolver < void > ) => (
101- this . #emitter. emit ( 'enq' , new Terminator ( cb ) ) ,
102- resolve ( )
103- ) )
96+ return new Promise (
97+ ( resolve : Resolver < void > , reject : SingleParameterAction < unknown > ) => {
98+ const state = this . #state
99+ if ( state )
100+ return reject ( new Error ( state ) )
101+ this . #state = 'ending'
102+ this . #emitter. emit ( 'enq' , new Terminator ( cb ) )
103+ return resolve ( )
104+ }
105+ )
104106 }
105107
106108 /**
107109 * この待ち行列の末尾に要素を追加する
108110 * @param value 要素の値
109111 */
110112 push ( value : T ) : Promise < void > {
111- const state = this . #state
112- if ( state )
113- throw new Error ( state )
114- return new Promise ( ( resolve : Resolver < void > ) => (
115- this . #emitter. emit ( 'enq' , value ) ,
116- resolve ( )
117- ) )
113+ return new Promise (
114+ ( resolve : Resolver < void > , reject : SingleParameterAction < unknown > ) => {
115+ const state = this . #state
116+ if ( state )
117+ return reject ( new Error ( state ) )
118+ this . #emitter. emit ( 'enq' , value )
119+ return resolve ( )
120+ }
121+ )
118122 }
119123
120124 /**
@@ -185,15 +189,12 @@ class Terminator {
185189 try {
186190 const result = this . cb ( )
187191 if ( result instanceof Promise )
188- result . catch ( reject ) . then ( resolve )
189- else
190- resolve ( )
192+ return result . catch ( reject ) . then ( resolve )
191193 }
192194 catch ( err : unknown ) {
193- reject ( err )
195+ return reject ( err )
194196 }
195- else
196- resolve ( )
197+ return resolve ( )
197198 } )
198199 }
199200}
0 commit comments