send(id, url, opt_priority, opt_imageCompletedCallback, opt_maxRetries) {
    // Check if there is already a request with the given id.
    if (this.requests_.get(id)) {
      throw Error(ee.MapTileManager.ERROR_ID_IN_USE_);
    }
    // Make the Request object.
    var request = new ee.MapTileManager.Request_(
        id, url, opt_imageCompletedCallback,
        goog.bind(this.releaseRequest_, this),
        opt_maxRetries !== undefined ? opt_maxRetries :
                                       ee.MapTileManager.MAX_RETRIES);
    this.requests_.set(id, request);

    // Setup the callback for the pool.
    var callback = goog.bind(this.handleAvailableToken_, this, request);
    this.tokenPool_.getObject(callback, opt_priority);

    return request;
  }
Registers the given request to be sent. Throws an error if a request
already exists with the given ID.
NOTE: It is not sent immediately. It is queued and will be sent when an
ImageLoader object becomes available, taking into account the request's
priority.
@param {string} id The id of the request.
@param {string} url Uri to make the request to.
@param {number=} opt_priority The priority of the request.
@param {function(!goog.events.Event, ?string)=} opt_imageCompletedCallback
    Callback function for when request is complete. Second param is the
    profile ID, if any.
@param {number=} opt_maxRetries The maximum number of times the request
    should be retried.
@return {!ee.MapTileManager.Request_} The queued request object.