docs: def _multi_request(self, verb, urls, query_params, data, to_json=True, send_as_file=False):
          """Issues multiple batches of simultaneous HTTP requests and waits for responses.
  
          Args:
              verb - MultiRequest._VERB_POST or MultiRequest._VERB_GET
              urls - A string URL or list of string URLs
              query_params - None, a dict, or a list of dicts representing the query params
              data - None, a dict or string, or a list of dicts and strings representing the data body.
              to_json - A boolean, should the responses be returned as JSON blobs
          Returns:
              If multiple requests are made - a list of dicts if to_json, a list of requests responses otherwise
              If a single request is made, the return is not a list
          Raises:
              InvalidRequestError - if no URL is supplied or if any of the requests returns 403 Access Forbidden response
          """
          if not urls:
              raise InvalidRequestError('No URL supplied')
  
          # Break the params into batches of request_params
          request_params = self._zip_request_params(urls, query_params, data)
          batch_of_params = [
              request_params[pos:pos + self._max_requests]
              for pos in range(0, len(request_params), self._max_requests)
          ]
  
          # Iteratively issue each batch, applying the rate limiter if necessary
          all_responses = []
          for param_batch in batch_of_params:
              if self._rate_limiter:
                  self._rate_limiter.make_calls(num_calls=len(param_batch))
  
              prepared_requests = [
                  self._create_request(
                      verb, url, query_params=query_param, data=datum, send_as_file=send_as_file,
                  ) for url, query_param, datum in param_batch
              ]
  
              responses = self._wait_for_response(prepared_requests)
              for response in responses:
                  if response:
                      all_responses.append(self._convert_to_json(response) if to_json else response)
                  else:
                      all_responses.append(None)
  
          return all_responses