start(callback) {
    let promise;
    if (this.isStarted()) {
      promise = Promise.resolve();
    } else {
      promise = new Promise((resolve, reject) => {
        const res = this.setUp((err) => {
          if (err) {
            reject(err);
            return;
          }
          resolve();
        });
        if (res && res.then) {
          // setUp returned a Promise
          res.then(resolve, reject);
        }
      })
        .then(() => {
          this.started = true;
          this.emit('start');
          return Promise.resolve();
        });
    }
    if (callback) {
      deprecated('Providing a callback to Component.start is deprecated, use Promises');
      promise.then(() => {
        callback(null);
      }, callback);
    }
    return promise;
  }
@param {ErrorableCallback} [callback] - Callback for when shutdown is ready
@returns {Promise<void>}