| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent f6bf3f8 commit 0ab8f26
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -668,7 +668,7 @@ function createReadable(queue) { | |||
| 668 | 668 | }, | |
| 669 | 669 | async throw(error) { | |
| 670 | 670 | queue.consumerThrow(error); | |
| 671 | - return { __proto__: null, value: undefined, done: true }; | ||
| 671 | + throw error; | ||
| 672 | 672 | }, | |
| 673 | 673 | }; | |
| 674 | 674 | }, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -147,10 +147,16 @@ async function testOndrainRejectsOnConsumerThrow() { | |||
| 147 | 147 | // Consumer throws via iterator.throw() before draining enough | |
| 148 | 148 | // to clear backpressure. The drain should reject. | |
| 149 | 149 | const iter = readable[Symbol.asyncIterator](); | |
| 150 | - await iter.throw(new Error('consumer error')); | ||
| 150 | + const err = new Error('consumer error'); | ||
| 151 | + const drainRejects = assert.rejects(drainPromise, (e) => e === err); | ||
| 152 | + const pendingWriteRejects = pendingWrite.catch(() => {}); | ||
| 153 | + await assert.rejects( | ||
| 154 | + () => iter.throw(err), | ||
| 155 | + (e) => e === err, | ||
| 156 | + ); | ||
| 151 | 157 | ||
| 152 | - await assert.rejects(drainPromise, /consumer error/); | ||
| 153 | - await pendingWrite.catch(() => {}); // Ignore write rejection | ||
| 158 | + await drainRejects; | ||
| 159 | + await pendingWriteRejects; // Ignore write rejection | ||
| 154 | 160 | } | |
| 155 | 161 | ||
| 156 | 162 | async function testWritev() { | |
@@ -303,7 +309,11 @@ async function testConsumerThrowRejectsWrites() { | |||
| 303 | 309 | writer.writeSync('a'); | |
| 304 | 310 | ||
| 305 | 311 | const iter = readable[Symbol.asyncIterator](); | |
| 306 | - await iter.throw(new Error('consumer boom')); | ||
| 312 | + const err = new Error('consumer boom'); | ||
| 313 | + await assert.rejects( | ||
| 314 | + () => iter.throw(err), | ||
| 315 | + (e) => e === err, | ||
| 316 | + ); | ||
| 307 | 317 | ||
| 308 | 318 | // Subsequent async writes should reject with the consumer's error | |
| 309 | 319 | await assert.rejects( | |
@@ -312,6 +322,18 @@ async function testConsumerThrowRejectsWrites() { | |||
| 312 | 322 | ); | |
| 313 | 323 | } | |
| 314 | 324 | ||
| 325 | + async function testConsumerThrowRejectsWithThrownError() { | ||
| 326 | + const { readable } = push(); | ||
| 327 | + | ||
| 328 | + const iter = readable[Symbol.asyncIterator](); | ||
| 329 | + const err = new Error('boom'); | ||
| 330 | + | ||
| 331 | + await assert.rejects( | ||
| 332 | + () => iter.throw(err), | ||
| 333 | + (e) => e === err, | ||
| 334 | + ); | ||
| 335 | + } | ||
| 336 | + | ||
| 315 | 337 | // end() resolves a pending read as done:true | |
| 316 | 338 | async function testEndResolvesPendingRead() { | |
| 317 | 339 | const { writer, readable } = push(); | |
@@ -373,14 +395,16 @@ async function testConsumerThrowRejectsPendingRead() { | |||
| 373 | 395 | await new Promise(setImmediate); | |
| 374 | 396 | ||
| 375 | 397 | const err = new Error('consumer read boom'); | |
| 376 | - const throwResult = await iter.throw(err); | ||
| 377 | - assert.strictEqual(throwResult.value, undefined); | ||
| 378 | - assert.strictEqual(throwResult.done, true); | ||
| 379 | - | ||
| 380 | - await assert.rejects( | ||
| 398 | + const readRejects = assert.rejects( | ||
| 381 | 399 | () => readPromise, | |
| 382 | 400 | (e) => e === err, | |
| 383 | 401 | ); | |
| 402 | + await assert.rejects( | ||
| 403 | + () => iter.throw(err), | ||
| 404 | + (e) => e === err, | ||
| 405 | + ); | ||
| 406 | + | ||
| 407 | + await readRejects; | ||
| 384 | 408 | } | |
| 385 | 409 | ||
| 386 | 410 | // end() while writes are pending rejects those writes | |
@@ -527,6 +551,7 @@ Promise.all([ | |||
| 527 | 551 | testWriteUint8Array(), | |
| 528 | 552 | testOndrainWaitsForDrain(), | |
| 529 | 553 | testConsumerThrowRejectsWrites(), | |
| 554 | + testConsumerThrowRejectsWithThrownError(), | ||
| 530 | 555 | testEndResolvesPendingRead(), | |
| 531 | 556 | testFailRejectsPendingRead(), | |
| 532 | 557 | testFailRejectsFutureReadWithFalsyReason(), | |
| Back | FazBrowse Home | New Git URL |
0 commit comments