There is nothing to build, restarts act on the location where the condition was raised. In a conditions system
unwinding is a restart, conditions don't unwind before running handlers.
The ability to update a value would make no sense otherwise.
I repeat, what you describe is literally how common-lisp works. Today. And how it has worked for 40 odd years. Also smalltalk.