Como limitar a simultaneidade do flatMap?

Estou tentando usar o RxJS para escrever um script para processar várias centenas de arquivos de log, cada um com cerca de 1 GB. O esqueleto do script parece

Rx.Observable.from(arrayOfLogFilePath)
.flatMap(function(logFilePath){
   return Rx.Node.fromReadStream(logFilePath)
   .filter(filterLogLine)
})
.groupBy(someGroupingFunc)
.map(someFurtherProcessing)
.subscribe(...)

O código funciona, mas observe que a etapa de filtragem de todos os arquivos de log será iniciada simultaneamente. No entanto, da perspectiva de desempenho de E / S do sistema de arquivos, é preferível processar um arquivo após o outro (ou pelo menos limitar a simultaneidade a alguns arquivos, em vez de abrir todas as centenas de arquivos ao mesmo tempo). Nesse sentido, como posso implementá-lo de uma "maneira reativa funcional"?

Eu tinha pensado em agendador, mas não conseguia descobrir como ele pode ajudar aqui.