Hello,

I don't understand something on BlockClosure>>ensure:.�Why does it use 'self valueNoContextSwitch' �and not 'self value' ? In which case is there an issue ?�

Thank you for any answers

BlockClosure>>ensure: is implemented this way :

ensure: aBlock
"Evaluate a termination block after evaluating the receiver, regardless of
whether the receiver's evaluation completes. �N.B. �This method is *not*
implemented as a primitive. �Primitive 198 always fails. �The VM uses prim
198 in a context's method as the mark for an ensure:/ifCurtailed: activation."

| complete returnValue |
<primitive: 198>
returnValue := self valueNoContextSwitch.
complete ifNil:[
complete := true.
aBlock value.
].
^ returnValue