У меня была аналогичная проблема, поэтому я задал вопрос в сообществе Firebase Slack. Я реализовал это и работает как шарм.
Функция readLines возвратит значение нулевой длины, когда она достигнет EOF.
Попробуйте проверить длину данных, возвращаемых readBin:
while (length(a <- readBin(f, 'int', n=1)) > 0) {
# do something
}