Normally interrupts are not reeabled when the interrupt service routine is run, so it will finish executing, and the pending interrupt with the highest priority will then take control when interrupts is reenabled at return from interrupt.
Note that you have to reeable the interrupt system in the ISR yourself. Before you do that, you need to be very certain that your code is fast enough to serve any interrupt situation, and it has to be reentrant in way that does not use up all the stack space before it is possible to clean out all pending interrupts. Stack space is the big question here.
Priority levels are normally processed only when more than one interrupt is pending at the same time.
Some processors have special interrupts that can not be disabled(non maskable interrupt), and will always be executed. This is a special superhigh priority interrupt, and used sparingly, even if available. I've seen it used only one time, and that was an emergency interrupt with higher priority than power fail. I suppose exactly power fail could be such a high priority source, in any system.