@@ -29,6 +29,13 @@ function getArrayBuffer(val) {
2929 : new Uint8Array ( val ) . buffer ;
3030}
3131
32+ function endRequests ( ) {
33+ for ( const capability of this . _requests ) {
34+ capability . resolve ( { value : undefined , done : true } ) ;
35+ }
36+ this . _requests . length = 0 ;
37+ }
38+
3239class PDFDataTransportStream extends BasePDFStream {
3340 _progressiveDone = false ;
3441
@@ -112,6 +119,8 @@ class PDFDataTransportStream extends BasePDFStream {
112119}
113120
114121class PDFDataTransportStreamReader extends BasePDFStreamReader {
122+ #endRequests = endRequests . bind ( this ) ;
123+
115124 _done = false ;
116125
117126 _queuedChunks = null ;
@@ -179,18 +188,21 @@ class PDFDataTransportStreamReader extends BasePDFStreamReader {
179188
180189 cancel ( reason ) {
181190 this . _done = true ;
182- for ( const capability of this . _requests ) {
183- capability . resolve ( { value : undefined , done : true } ) ;
184- }
185- this . _requests . length = 0 ;
191+ this . #endRequests( ) ;
186192 }
187193
188194 progressiveDone ( ) {
189195 this . _done ||= true ;
196+
197+ if ( this . _queuedChunks . length === 0 ) {
198+ this . #endRequests( ) ;
199+ }
190200 }
191201}
192202
193203class PDFDataTransportStreamRangeReader extends BasePDFStreamRangeReader {
204+ #endRequests = endRequests . bind ( this ) ;
205+
194206 onDone = null ;
195207
196208 _begin = - 1 ;
@@ -213,13 +225,10 @@ class PDFDataTransportStreamRangeReader extends BasePDFStreamRangeReader {
213225 if ( this . _requests . length === 0 ) {
214226 this . _queuedChunk = chunk ;
215227 } else {
216- const firstCapability = this . _requests . shift ( ) ;
217- firstCapability . resolve ( { value : chunk , done : false } ) ;
228+ const capability = this . _requests . shift ( ) ;
229+ capability . resolve ( { value : chunk , done : false } ) ;
218230
219- for ( const capability of this . _requests ) {
220- capability . resolve ( { value : undefined , done : true } ) ;
221- }
222- this . _requests . length = 0 ;
231+ this . #endRequests( ) ;
223232 }
224233 this . _done = true ;
225234 this . onDone ?. ( ) ;
@@ -241,12 +250,9 @@ class PDFDataTransportStreamRangeReader extends BasePDFStreamRangeReader {
241250
242251 cancel ( reason ) {
243252 this . _done = true ;
244- for ( const capability of this . _requests ) {
245- capability . resolve ( { value : undefined , done : true } ) ;
246- }
247- this . _requests . length = 0 ;
253+ this . #endRequests( ) ;
248254 this . onDone ?. ( ) ;
249255 }
250256}
251257
252- export { PDFDataTransportStream } ;
258+ export { endRequests , PDFDataTransportStream } ;
0 commit comments