set data(value) {
      if (value === undefined) {
        return;
      }
      if (this._data !== EMPTY_PROMISE) {
        error('Promise ' + this.name +
              ': Cannot set the data of a promise twice');
      }
      this._data = value;
      this.hasData = true;

      if (this.onDataCallback) {
        this.onDataCallback(value);
      }
    }
Builds a promise that is resolved when all the passed in promises are
resolved.
@param {Promise[]} promises Array of promises to wait for.
@return {Promise} New dependant promise.