Generalizing Unwinding in UPARSE

So I thought I might play a little bit of a devil's advocate on what I say below:

If we make an analogy with a plain EITHER in historical Rebol, the absence or presence of blocks does make a difference.

Without blocks:

rebol2>> truebranch: func [] [print "running truebranch" [<true>]]

rebol2>> falsebranch: func [] [print "running falsebranch" [<false>]]

rebol2>> either false truebranch falsebranch
running truebranch
running falsebranch
== <false>

With blocks:

rebol2>> either false [truebranch] [falsebranch]
running falsebranch
== [<false>]

Though that changes the result. Hence perhaps blocks aren't the best analogy though, as really it's GROUP!s in plain Rebol that line up with how PARSE thinks of BLOCK!:

rebol2>> either false (truebranch) (falsebranch)
running truebranch
running falsebranch
== <false>

Either way, weird early-morning not-quite up-yet thought is: might it be not entirely un-Rebol-like to say that you only get the rollback from BLOCK! when alternates fail?

This would give you the power to introduce rollback whenever you found you weren't getting it where you needed it. Maybe in the search for overall reduction of systemic complexity, maybe I was right when I wrote it the first time? :-/