Finally took the time to sort out how exceptions within alternatives should be handled.  The issue is complicated due to having two contexts: before commit point and after commit point.  Exceptions before commit point are tricky.  The current implementation may be overly optimistic, because it claims the pick for the duration of executing user code.  I would estimate that it doesn't cause problems in real programs, but it is certainly possible to contrive programs where that causes problems.