IMHO you can't use a serin/serout/pause in an Interrupt routine since it's longer than the interrupt cycle itself. BUT have you try to disable all interrupt by writing to INTCON a the begining of your Handler and re-enable them at the end?

BUT also, you must use shorter delay , let's say pauseus 10, and do a loop to produce your needed delay. That way, you'll be sure of getting interrupt as fast as it should.

there's probably something else but begin with it and post your results.