async def METHOD_NAME(
    self,
    url,
    fail_on_https_error: bool = False,
    fail_on_s3_error: bool = False,
    expected_bucket_owner: str = None,
):
    scheme = get_url_scheme(url)
    if scheme in ["https", "s3"]:
        if scheme == "s3":
            _async_validate_s3_uri = AsyncUtils.async_from_sync(self._validate_s3_uri)
            await _async_validate_s3_uri(
                url, fail_on_error=fail_on_s3_error, expected_bucket_owner=expected_bucket_owner
            )
        else:
            if expected_bucket_owner:
                self._add_failure("S3BucketOwner can only be specified with S3 URL", FailureLevel.ERROR)
            _async_validate_https_uri = AsyncUtils.async_from_sync(self._validate_https_uri)
            await _async_validate_https_uri(url, fail_on_error=fail_on_https_error)
    else:
        self._add_failure(
            f"The value '{url}' is not a valid URL, choose URL with 'https' or 's3' prefix.",
            FailureLevel.ERROR,
        )