Dispatch middleware registered on a scope via CommandScope.use. Onion-style: it
receives the next callback and returns a wrapping callback, so the contributor's inner
callback stays pure while cross-cutting infra (transaction batching / busy / edit-mode)
lives in the wrapper. Bound to the scope that authors the
callback — not inherited down the tree (see design/COMMAND-DESIGN.md "Dispatch middleware").
First-registered is outermost. next (and command) carry through so a layer can read
command.getLabel() etc.
Dispatch middleware registered on a scope via
CommandScope.use. Onion-style: it receives thenextcallback and returns a wrapping callback, so the contributor's inner callback stays pure while cross-cutting infra (transaction batching / busy / edit-mode) lives in the wrapper. Bound to the scope that authors the callback — not inherited down the tree (see design/COMMAND-DESIGN.md "Dispatch middleware"). First-registered is outermost.next(andcommand) carry through so a layer can readcommand.getLabel()etc.