module Roda::RodaPlugins::Streaming::InstanceMethods

def handle_stream_error(e, out)

Handle exceptions raised while streaming when using :loop
def handle_stream_error(e, out)
  raise e
end

def stream(opts=OPTS, &block)

See Streaming for details.
status and headers, calling the block to get the streaming response.
Immediately return a streaming response using the current response
def stream(opts=OPTS, &block)
  if opts[:loop]
    block = proc do |out|
      until out.closed?
        begin
          yield(out)
        rescue => e
          handle_stream_error(e, out)
        end
      end
    end
  end
  stream_class = (opts[:async] && RUBY_VERSION >= '2.3') ? AsyncStream : Stream
  throw :halt, @_response.finish_with_body(stream_class.new(opts, &block))
end