def METHOD_NAME(self, name: str, *args, **kwargs) -> Domain:
    """Fetches the Domain with `name`
    :param      name:  name of the domain to fetch
    A typical Amazon response looks like:
    .. code-block:: json
        {
            "configuration": {
                "workflowExecutionRetentionPeriodInDays": "7",
            },
            "domainInfo": {
                "status": "REGISTERED",
                "name": "CrawlTest",
            }
        }
    """
    try:
        response = self.connection.describe_domain(name)
    except SWFResponseError as e:
        # If resource does not exist, amazon throws 400 with
        # UnknownResourceFault exception
        if e.error_code == "UnknownResourceFault":
            raise DoesNotExistError("No such domain: %s" % name)
        elif e.error_code == "UnrecognizedClientException":
            raise InvalidCredentialsError("Invalid aws credentials supplied")
        # Any other errors should raise
        raise ResponseError(e.body["message"])
    domain_info = response["domainInfo"]
    domain_config = response["configuration"]
    return Domain(
        domain_info["name"],
        status=domain_info["status"],
        retention_period=domain_config["workflowExecutionRetentionPeriodInDays"],
        connection=self.connection,
    )