async fetch({ crate, version }) {
    const url = version
      ? `https://crates.io/api/v1/crates/${crate}/${version}`
      : `https://crates.io/api/v1/crates/${crate}?include=versions,downloads`
    const schema = version ? versionResponseSchema : crateResponseSchema
    return this._requestJson({ schema, url })
  }
Fetches data from the crates.io API.

@param {object} options - The options for the request
@param {string} options.crate - The crate name.
@param {string} [options.version] - The crate version number (optional).
@returns {Promise<object>} the JSON response from the API.