I don't agree with your 3rd point. In priority based interrupt handling, while a lower priority interrupt is being serviced, if a higher priority interrupt happens, the higher priority interrupt will immediately get serviced.
The correct reasoning here is that RFE is an "instruction", so it is atomic. An exception is checked and executed only after the current instruction has finished executing.