async run(url, options) {
    options = {...this._options, ...options};
    const apiKey = options.psiApiKey;
    if (!apiKey) throw new Error('PSI API key must be provided to use the PSI runner');
    const client = new PsiClient({apiKey, endpointURL: options.psiApiEndpoint});
    return JSON.stringify(
      await client.run(url, {strategy: options.psiStrategy, categories: options.psiCategories})
    );
  }
@param {string} url
@param {{psiApiKey?: string, psiApiEndpoint?: string, psiStrategy?: 'mobile'|'desktop', psiCategories?: Array<'performance' | 'accessibility' | 'best-practices' | 'seo'>}} [options]
@return {Promise<string>}