class Falcon::Input

def read(length = nil, buffer = nil)

def read(length = nil, buffer = nil)
	if length
		fill_buffer(length) if @buffer.bytesize <= length
		
		return @buffer.slice!(0, length)
	else
		buffer ||= Async::IO::BinaryString.new
		
		buffer << @buffer
		@buffer.clear
		
		while chunk = read_next
			buffer << chunk
		end
		
		return buffer
	end
end