Commit e3442d9
fix(billing): resolve terminal promise even if success side effects throw
A thrown error in the success-path side-effects block (dialog close,
settings show, or toast add) silently skips resolveTerminal, leaving
any caller awaiting startOperation() hanging forever. poll()'s
catch-all swallowed the exception, masking the hang.
Adds a try/finally so resolveTerminal runs unconditionally after the
success side-effects block. Adds a regression test that throws from
the second mockToastAdd call and asserts the terminal promise still
resolves to succeeded.
Found in the review of #14421.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent dc76f3e commit e3442d9
2 files changed
Lines changed: 39 additions & 18 deletions
Lines changed: 19 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
660 | 660 | | |
661 | 661 | | |
662 | 662 | | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
663 | 682 | | |
664 | 683 | | |
665 | 684 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
419 | 419 | | |
420 | 420 | | |
421 | 421 | | |
422 | | - | |
423 | | - | |
424 | | - | |
425 | | - | |
426 | | - | |
427 | | - | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
428 | 429 | | |
429 | | - | |
430 | | - | |
431 | | - | |
432 | | - | |
433 | | - | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
434 | 435 | | |
435 | | - | |
436 | | - | |
437 | | - | |
438 | | - | |
439 | | - | |
440 | | - | |
441 | | - | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
442 | 444 | | |
443 | 445 | | |
444 | 446 | | |
| |||
0 commit comments