class Async::HTTP::Body::Inflate

def read

def read
	return if @stream.finished?
	
	# The stream might have been closed while waiting for the chunk to come in.
	if chunk = super
		@input_length += chunk.bytesize
		
		# It's possible this triggers the stream to finish.
		chunk = @stream.inflate(chunk)
		
		@output_length += chunk.bytesize
	elsif !@stream.closed?
		chunk = @stream.finish
		
		@output_length += chunk.bytesize
	end
	
	if chunk.empty? and @stream.finished?
		return nil
	end
	
	return chunk
end