This reminds me of the Thompson shell goto, which is an external(!) program that messes with its parent's file descriptors looking for `: label`.
See manpage at https://etsh.nl/man/_goto.1.html and source code at https://github.com/eunuchs/tsh/blob/master/goto.c.
See, history can give you a more inert syntax. And maybe a new way of thinking about how to make this thing... I would love to have a more robust version to do C-style goto cleanups.