static requestAsync(action, data) {
    return new Promise(resolve => {
      this.request(action, data, resolve);
    });
  }
Creates an event that the extension is listening for and will
asynchronously respond to.
@param {string} action - The action to trigger.
@param {Object|string} [data] - The data to send.
@returns {Promise<any>} A promise that is resolved with the response data.