probably old news to many of you but I just noticed this
today: "return" in uplevel returns out of the context uplevel was
called from, not the context uplevel is "reparented" into.
example:
tcl>proc foo {} { uplevel { puts 1; return; puts 2 } }
tcl>proc bar {} { foo; puts 3 }
tcl>bar
1
3
note bar calls foo, which contains a return statement in uplevel,
but that return does not make bar terminate.