code: function mapbox(address, options = Mapbox.Options) {
    // Define options
    const mode = options.mode || Mapbox.Options.mode
    const access_token = options.access_token || options.key || process.env.MAPBOX_ACCESS_TOKEN
    const country = options.country
    const limit = options.limit || Mapbox.Options.limit
  
    // Validation
    if (!access_token) { error('[options.access_token] is required') }
    if (['mapbox.places', 'mapbox.places-permanent'].indexOf(mode) === -1) { error('--mode is invalid') }
    if (country && iso3166.codes[country] === undefined) { error('--country is invalid') }
  
    // URL Parameters
    const params = {
      access_token,
      country,
      limit,
    }
  
    // Request
    const url = `https://api.mapbox.com/geocoding/v5/${mode}/${address}.json`
    return request(url, Mapbox.toGeoJSON, params, options)
  }
docs: Mapbox Provider
  
  https://www.mapbox.com/api-documentation/#geocoding
  
  @param {string} address Location for your search
  @param {MapboxOptions} [options] Mapbox Options
  @param {string} [options.access_token] Access token or environment variable `MAPBOX_ACCESS_TOKEN`
  @param {string} [options.mode='mapbox.places'] Mode mapbox.places or mapbox.places-permanent
  @param {string} [options.country] ISO 3166 alpha 2 country codes, separated by commas
  @param {LngLat} [options.proximity] Location around which to bias results, given as longitude,latitude
  @param {Array<string>} [options.types] Filter results by one or more type.
  @param {boolean} [options.autocomplete=true] Whether or not to return autocomplete results.
  @param {BBox} [options.bbox] Bounding box within which to limit results, given as minX,minY,maxX,maxY
  @param {number} [options.limit=5] Limit the number of results returned.
  @returns {Promise<Points>} GeoJSON Point FeatureCollection
  @example
  const geojson = await geocoder.mapbox('Ottawa, ON')