@luni, glad to hear you eliminated the need for popLocked(). I think it's important to clarify that disabling interrupts will not interfere with the capture of edges, but rather with the response to the capture interrupt. If an edge arrives while interrupts are disabled, and interrupts are re-enabled before the next edge occurs, the interrupt will occur as soon as interrupts are re-enabled, and the same value will be read from the capture register as if interrupts had never been disabled. It's definitely better to avoid disabling interrupts, but as long as interrupt disable periods are less than the time between edges, with some margin, then no edges will be missed, and the decoder will get exactly the same data as if there were no disable/enable. For quadrature counting, the counting continues normally while interrupts are disabled, but if your code depends on reading the count at precise intervals via a timer interrupt, that read can be delayed by however long interrupts are disabled, and that can the accuracy of an inferred frequency.
I think @luni was replying to my earlier statement regarding the need for this application to do things beyond just reading the serial steam. I'll actually need to track a quadrature encoder and respond to over/underflow interrupts (I think this is done in hardware) as well as read/write a second serial channel (2.5Mbaud, NRZ). Although that brings a good point... Does NoInterrupts() block serial data from reaching the serial buffer on a hardware serial port?