buffer_size is the value passed to kafka to tell it how much data we can handle. We don't actually have a real buffer, but we have to pass something to kafka. If that size is smaller than the next available message, kafka sends a special error, and the client can either increase the buffer size, skip an offset, or give up and go home. We increase the buffer size up to self.max_buffer_size if it's not None.

min_bytes is how much data kafka should wait for to be available before responding. It is set to 0 or 1 in the FetchContext based on weather or not we want to block (i.e. have at least 1 message before returning). If we pass buffer_size for min_bytes, and buffer_size is, say, 4k, then kafka will wait for 4k of data to be available before responding, which is not really what we want.