Well, that surprised me [Eek!]

It should work, and is valid use of it in your situation.

More weirdness with 4.20:


BREAK ON

while "true"
"Stage 1 *" ?
gosub "subscript"
"Stage 2 .." ?
loop
exit 0

:subscript
"Stage 3 :::" ?
exit 1
"Stage 4 !!!!" ?



This loops, printing "Stage 1" and "Stage 3".

It looks like the stack is not getting cleaned up properly after an exit. Anyone got the latest release candidate to hand that they can check with?