in modules/core/src/main/scala/tfr/TFRecord.scala [96:107]
def streamReader[F[_], A](
reader: Kleisli[F, InputStream, Either[Error, A]]
): Kleisli[Stream[F, *], InputStream, Either[Error, A]] =
Kleisli { input =>
Stream
.repeatEval(reader.apply(input))
.repeatPull(_.uncons1.flatMap {
case None => Pull.pure(None)
case Some((Left(Error.EmptyHeader), _)) => Pull.pure(None)
case Some((elem, stream)) => Pull.output1(elem).as(Some(stream))
})
}