Posso fazer com que o Sinatra / Rack não leia todo o corpo da solicitação na memória?

Digamos que eu tenho uma rota Sinatra ala:

put '/data' do
  request.body.read
  # ...
end

Parece que todo o request.body é lido na memória. Existe uma maneira de consumir o corpo à medida que ele entra no sistema, em vez de ter tudo armazenado em buffer no Rack / Sinatra antes?

Vejo que posso fazer isso para ler o corpo em partes, mas o corpo inteiro ainda parece ser lido na memória de antemão.

put '/data' do
  while request.body.read(1024) != nil 
    # ...
  end
  # ...
end

questionAnswers(1)

yourAnswerToTheQuestion