Emitted as throttle.pending on store.events when a node first goes
dirty and starts being withheld. Fires once per pending episode, not
once per change — see throttle.published for the other end.
Carries only what is settled at emit time. The dwell gate is not: one
store mutation marks a node several times, and the mark that creates
the entry is typically the untagged one from replaceNode, so
dwellMs is still 0 here and is raised immediately afterwards. Read
Store.getPending for the settled gate.
Never emitted by an un-throttled store.
Fires mid-mutation, from inside markDirty, so a handler that walks the
node tree may observe a half-applied change — e.g. during moveNode it
lands after the old parent's removeChild but before the new parent's
addChild. Consistent with how node.transitioned already behaves.
Emitted as
throttle.pendingonstore.eventswhen a node first goes dirty and starts being withheld. Fires once per pending episode, not once per change — seethrottle.publishedfor the other end.Carries only what is settled at emit time. The dwell gate is not: one store mutation marks a node several times, and the mark that creates the entry is typically the untagged one from
replaceNode, sodwellMsis still0here and is raised immediately afterwards. Read Store.getPending for the settled gate.Never emitted by an un-throttled store.
Fires mid-mutation, from inside
markDirty, so a handler that walks the node tree may observe a half-applied change — e.g. duringmoveNodeit lands after the old parent'sremoveChildbut before the new parent'saddChild. Consistent with hownode.transitionedalready behaves.