def METHOD_NAME(db_session: Session, contract: VerifiedSmartContract, crawl_url: str):
    attempt = 0
    current_interval = 2
    success = False
    response: Optional[requests.Response] = None
    while (not success) and attempt < 3:
        attempt += 1
        try:
            response = requests.get(crawl_url)
            response.raise_for_status()
            success = True
        except:
            current_interval *= 2
            time.sleep(current_interval)
    if response is None:
        print(f"Could not process URL: {crawl_url}", file=sys.stderr)
        return None
    page = response.json()
    result = page["result"][0]
    contract_info = {
        "data": result,
        "crawl_version": MOONCRAWL_VERSION,
        "crawled_at": f"{datetime.now()}",
    }
    object_key = f"/etherscan/v1/{contract.address}.json"
    push_to_bucket(contract_info, object_key)
    try:
        eth_label = EthereumLabel(
            label=ETHERSCAN_SMARTCONTRACTS_LABEL_NAME,
            address=contract.address,
            label_data={
                "object_uri": f"s3://{bucket}/{object_key}",
                "name": contract.name,
                "tx_hash": contract.tx_hash,
            },
        )
        try:
            db_session.add(eth_label)
            db_session.commit()
        except Exception as e:
            db_session.rollback()
            raise e
    except Exception as e:
        logger.error(
            f"Failed to add addresss label ${contract.address} to database\n{str(e)}"
        )