orangy
context
that gets a lambda, and executes its contents with a reciever. Reciever accumulates calls for defer
block. So you have something like this:
context {
defer { … }
foo()
bar()
defer { … }
baz()
}
Then, if exception happens or block returns normally, it executes all registered deferred lambdas