def METHOD_NAME(run):
    """
    Follow the workflow run until completion and return its conclusion.
    """
    # Imported from here since only x86_64 images ship this module
    from github import GithubException
    print(color_message("Workflow run link: " + color_message(run.html_url, "green"), "blue"))
    minutes = 0
    failures = 0
    MAX_FAILURES = 5
    while True:
        # Do not fail outright for temporary failures
        try:
            github = GithubAPI('DataDog/datadog-agent-macos-build')
            run = github.workflow_run(run.id)
        except GithubException:
            failures += 1
            print(f"Workflow run not found, retrying in 15 seconds (failure {failures}/{MAX_FAILURES})")
            if failures == MAX_FAILURES:
                raise Exit(code=1)
            sleep(15)
            continue
        status = run.status
        conclusion = run.conclusion
        if status == "completed":
            return conclusion
        else:
            print(f"Workflow still running... ({minutes}m)")
            # For some unknown reason, in Gitlab these lines do not get flushed, leading to not being
            # able to see where's the job at in the logs. The following line forces the flush.
            sys.stdout.flush()
        minutes += 1
        sleep(60)