static JSString *retrieve_geo_info(JSContext *cx, HandleObject self) {
  RootedString address_str(cx, address(self));
  if (!address_str) {
    address_str = retrieve_address(cx, self);
    if (!address_str)
      return nullptr;
  }

  RootedString geo(cx, get_geo_info(cx, address_str));
  if (!geo)
    return nullptr;

  JS::SetReservedSlot(self, Slots::GeoInfo, JS::StringValue(geo));
  return geo;
}
static JSString *retrieve_geo_info(JSContext *cx, HandleObject self) {
  RootedString address_str(cx, address(self));
  if (!address_str) {
    address_str = retrieve_address(cx, self);
    if (!address_str)
      return nullptr;
  }

  RootedString geo(cx, get_geo_info(cx, address_str));
  if (!geo)
    return nullptr;

  JS::SetReservedSlot(self, Slots::GeoInfo, JS::StringValue(geo));
  return geo;
}