fetchPSI(params) {
    const apiUrl = new URL(PSI_URL);
    for (let [name, value] of Object.entries(params)) {
      if (Array.isArray(value)) continue;
      if (name === 'strategy') value = value || 'mobile';
      if (typeof value !== 'undefined') apiUrl.searchParams.append(name, value);
    }
    for (const singleCategory of (params.category || PSI_DEFAULT_CATEGORIES)) {
      apiUrl.searchParams.append('category', singleCategory);
    }
    apiUrl.searchParams.append('key', PSI_KEY);
    return fetch(apiUrl.href, {
      headers: {
        referer: 'googlechrome.github.io',
      },
    }).then(res => res.json());
  }
@param {PSIParams} params
@return {Promise<PSIResponse>}