ちなみに Common Lisp なら

(loop
(proc-A)
(if (end? )
(return val))
(proc-B))

んー、実にシンプル。
さらに return は便利で。

(defun foo ()
...
(if a
(return val))
... )

のように関数から途中で抜けれる。
こんな便利な return を無くしたのも
それなりの理由があると思うのです。
なにしろ、 SRFI にもないですから(確か)。