Those statement you said must be terminated prior to jump to interrupt routines. Using loop of short PauseUs, Using internal USART, create your own PULSIN statement will help.

Now it depend of your skill level. Usually i don't use PULSEIN, but i use an internal TIMER in counter mode (something like RA4 T0CKIN) with a PAUSE (or pause loop). Same for Usart. Sure that's a bit harder but save a huge amount of codespace. Maybe, i said maybe, Darrel's instant interupt may be of help but i'd never test them.

Even in assembler, SERIN, PAUSE, PULSEIN, should be terminated prior to jump to an interrupt handler. IMHO so far...