in reply to Exiting subroutine via next

My question is: why this behaviour ?

I believe that's it's implemented at its simplest. next, last and redo simply locate the closest frame on the stack that supports the operation. Doing anything different would require extra work.