'Add a new request.
Every callback added will be paired with a unique id, the request_id. That
unique id will be passed back to the callback when the response comes back
from the server. The default behavior is to have the library generate it\'s
own unique id. If the caller passes in a request_id then they must ensure
uniqueness for each request_id, and if they are not an exception is
raised. Callers should either supply all request_ids or nevery supply a
request id, to avoid such an error.
Args:
request: HttpRequest, Request to add to the batch.
callback: callable, A callback to be called for this response, of the
form callback(id, response, exception). The first parameter is the
request id, and the second is the deserialized response object. The
third is an googleapiclient.errors.HttpError exception object if an HTTP error
occurred while processing the request, or None if no errors occurred.
request_id: string, A unique id for the request. The id will be passed to
the callback with the response.
Returns:
None
Raises:
BatchError if a media request is added to a batch.
KeyError is the request_id is not unique.'

@util.positional(2)
def add(self, request, callback=None, request_id=None):

    if (request_id is None):
        request_id = self._new_id()
    if (request.resumable is not None):
        raise BatchError('Media    requests    cannot    be    used    in    a    batch    request.')
    if (request_id in self._requests):
        raise KeyError(('A    request    with    this    ID    already    exists:    %s' % request_id))
    self._requests[request_id] = request
    self._callbacks[request_id] = callback
    self._order.append(request_id)
