Interesting issue today with Matrix/CLJD, involving a newly understood requirement for forcing top-level state change in the face of lingering dynamic variable bindings. Not clear yet why we never saw this before, except that Dart is Matrix's first encounter with serious Future usage. Could take a while to compose, so the deal is this:
• we know that mset! in an observer/watch is fine, but we have to enqueue it for execution as soon as the current state change has been fully propagated;
• what is new: mset! in a callback must be wrapped in as-dart-callback, which in part provides with-mx-isolation to avoid unwanted dynamic bindings of key Matrix control variables.
Observer compliance via with-cc is enforced by MX internals. Not clear if we can do enforce as-dart-callback in callbacks. Still looking for a way to do that.