Look at example:
methodA
| result |
result := false.
[result := self methodB] ensure: [result ifTrue: [...]]
methodB
result := 1 < 2.
^result
Imagine now that methodB starts execution in context of call inside methodA.
Is it possible to terminate process at point of methodB return (^result)?
In that case ensure block in methodA will perform wrong logic.