dispose method
Disposes all children, fails pending cond completers, then
disposes this.
Each step is independently guarded so a throw in one cannot
prevent the others from running — super.dispose in particular
MUST run, or the pod is left half-disposed (_listeners still
attached) and subsequent set calls would keep firing.
Implementation
@override
void dispose() {
try {
disposeChildren();
} catch (e) {
Log.err(e, tags: {#df_pod});
}
try {
_failPendingConds();
} catch (e) {
Log.err(e, tags: {#df_pod});
}
super.dispose();
}