code: async function searchQueryServiceUrl(baseUrl) {
    // Should we really be caching all these NuGet feeds in memory?
    const searchQueryServices = await promisify(regularUpdate)({
      url: `${baseUrl}/index.json`,
      // The endpoint changes once per year (ie, a period of n = 1 year).
      // We minimize the users' waiting time for information.
      // With l = latency to fetch the endpoint and x = endpoint update period
      // both in years, the yearly number of queries for the endpoint are 1/x,
      // and when the endpoint changes, we wait for up to x years to get the
      // right endpoint.
      // So the waiting time within n years is n*l/x + x years, for which a
      // derivation yields an optimum at x = sqrt(n*l), roughly 42 minutes.
      intervalMillis: 42 * 60 * 1000,
      json: true,
      scraper: json =>
        json.resources.filter(
          resource => resource['@type'] === 'SearchQueryService'
        ),
    })
    return randomElementFrom(searchQueryServices)['@id']
  }
docs: /*
  Hit the service index endpoint and return a SearchQueryService URL, chosen
  at random. Cache the responses, but return a different random URL each time.