A while ago I posted this patch:

   http://lists.gnu.org/archive/html/guile-devel/2014-08/msg00058.html

No-one had anything to say about it. But I would like to know what to do if I want my code to work with the next release of Guile.

I think in retrospect this patch is too much. A better patch would leave the API alone, and just remove the existing check for the current throw handlers, and make the documentation clearer about exactly what "the dynamic context of the throw" really means.

If the catcher wants to 'fall through' to the main handler from the pre-unwind-handler, then she can just return from the pre-unwind-handler. So what is the function this check provides?

If we remove the check, then the dynamic context of the throw, in which the pre-unwind-handler is called, includes the throw-handlers in effect at the time of the throw., So if you throw the same exception from within the pre-unwind-handler, you re-enter it.

What I am proposing is a change to the actual semantics implemented, but it is arguably not a change to the semantics documented. Or have I missed the clearer definition somewhere else in the manual of what "the dynamic context of the throw" means, and which makes it clear that this is everything but the throw handlers in effect at the time?!

Ian