It’s because instead of
return func(...);
it has to do something like
with (ctx._other) {
with (ctx._self) {
return func(...);
}
}
And there are a couple edge cases where doing with (<id of a freshly destroyed instance>) will not do anything, so you don’t always want your with chain.