{"version":"2.1.269","anchor":"sessionreceive-hook-path-now-returns-a-disposable-queuei","canonical_anchor":"inbound-message-enqueueing-gets-an-explicit-disposable-queu","heading":"Inbound message handling gets an explicit disposable queueing handle","tier":"internal","area":"Plugin Hooks","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269\/e\/sessionreceive-hook-path-now-returns-a-disposable-queuei","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269","markdown":"### Inbound message handling gets an explicit disposable queueing handle\n\nInbound message paths, including the session.receive hook, now use a disposable queueing handle to track whether a message was actually enqueued\n\n**What**\n\n- The peer-messaging and `bridge:repl` inbound-message handlers now hold onto a `queueing` object returned alongside the message content. It's declared with `using` (a pattern that runs cleanup automatically), and the handler calls `.queued()` once the message is actually enqueued; if the handler returns early without enqueueing, the cleanup logic fires instead.\n\n- The `session.receive` hook dispatch path now always returns a `queueing` field too: a no-op placeholder when no hook is registered, or a real one tied to an arrival-tracking mechanism when a hook consumes or holds onto the message.\n\n**Why**\n\nThis ensures that whenever a message is received, there's a reliable, explicit way to know whether it was actually queued or dropped, so cleanup happens correctly in both cases instead of relying on implicit behavior.\n\n- Area: Plugin Hooks\n- Names: `session.receive`\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 1\/5"}