Right. Model drivers won't break replication this way. But it isn't really OK for them to use `this.kernel(.kernel)+` either since it's bypassing the nice interface that the kernel was trying to provide. (Loses access for making future calls, automatic logging, or maybe a future API linter).

One of the things that came out of Eric's async changes during the `initialize` patch is that the kernel's async handling can be a good bit cleaner if we expand the scope of the intermediate stage between the drivers and the kernel. If the kernel can always complete actions with callbacks instead of mostly using return values, and always expect the calls it makes to driver handlers to do the same, async handling within the kernel will all be done the same way, and a lot of complexity would go away (no more pausing and resuming the queue, for example).

The intermediate stage would then buffer the kernel's interface to also support the imperative style that drivers want to use most of the time. Then they _really_ wouldn't want to skip directly to the kernel.