Bound the messages held for a shutdown, and report a partial receipt
This commit is contained in:
@@ -58,6 +58,7 @@ Rules the API follows:
|
||||
| A draining `close()` and `unbind()`, bounded by `shutdownTimeout` or an abort | `test/session-extras.test.ts` |
|
||||
| A drain that also waits out the messages the application has not answered, with `sendDlr()` the one send that passes it | `test/session-extras.test.ts` |
|
||||
| `OutgoingRequests`: the gate, the window, the pending map and the retry under one owner, told when a link comes up or goes down | `test/session-extras.test.ts`, `test/session.test.ts` |
|
||||
| Held messages capped and expiring, so an application that answers nothing cannot grow them | `test/session-extras.test.ts` |
|
||||
| A send with no link held for the next one, and one the link dropped under counted as `unanswered` | `test/session-extras.test.ts` |
|
||||
| Every runnable README example | `test/readme.test.ts` |
|
||||
| Receipt-versus-message classification by `esm_class` | `test/dlr.test.ts`, `test/session.test.ts` |
|
||||
@@ -135,9 +136,9 @@ session message is a change to every call site.
|
||||
- [ ] **An `sms` listener that rejects before answering costs a whole `shutdownTimeout`.**
|
||||
One that *throws* is fine: `emit()` catches it, returns false, and `emitSms()` releases the
|
||||
hold. A rejecting `async` one reaches `sessionError` through `captureRejections`, which hands
|
||||
the handler an `unknown[]` the `Sms` cannot be read out of without a cast, so nothing releases.
|
||||
Same cost as the `onRequest`-answers-nothing case that was declined, but reached by a bug
|
||||
rather than a policy. Raised by review, 2026-09-01.
|
||||
the handler an `unknown[]` the `Sms` cannot be read out of without a cast, so nothing releases
|
||||
until the message expires. Same cost as the `onRequest`-answers-nothing case that was declined,
|
||||
but reached by a bug rather than a policy. Raised by review, 2026-09-01.
|
||||
|
||||
- [ ] **A message the reconnect dropped is answered into the void, and reported as delivered.**
|
||||
`teardown()` clears the held messages along with the inbound segments, which is right — but the
|
||||
|
||||
Reference in New Issue
Block a user