Я когда-то давно работал над схожей задачей с bluetooth модулем, общение с которым проходило с помощью AT команд. Аналогично с Вашим примером, в прерывании заполнял буфер, далее в фоне делал необходимые действия после завершения приёма или отправки. Поскольку все посылки были ожидаемы, то ситуации как "не успели посмотреть буфер" не возникало.