code: def send_request(self, request, correlation_id=None):
          
          log.debug('Sending request %s', request)
          if correlation_id is None:
              correlation_id = self._next_correlation_id()
          header = RequestHeader(request,
                                 correlation_id=correlation_id,
                                 client_id=self._client_id)
          message = b''.join([header.encode(), request.encode()])
          size = Int32.encode(len(message))
          data = size + message
          self.bytes_to_send.append(data)
          if request.expect_response():
              ifr = (correlation_id, request)
              self.in_flight_requests.append(ifr)
          return correlation_id
docs: Encode and queue a kafka api request for sending.
  
          Arguments:
              request (object): An un-encoded kafka request.
              correlation_id (int, optional): Optionally specify an ID to
                  correlate requests with responses. If not provided, an ID will
                  be generated automatically.
  
          Returns:
              correlation_id