def METHOD_NAME(
    self, stack: Stack, *, status: Optional[Status], **_: Any
) -> Status:
    wait_time = 0 if status is PENDING else STACK_POLL_TIME
    if self.cancel.wait(wait_time):
        return INTERRUPTED
    provider = self.build_provider()
    try:
        stack_data = provider.get_stack(stack.fqn)
    except StackDoesNotExist:
        LOGGER.debug("%s:stack does not exist", stack.fqn)
        # Once the stack has been destroyed, it doesn't exist. If the
        # status of the step was SUBMITTED, we know we just deleted it,
        # otherwise it should be skipped
        if status == SUBMITTED:
            return DESTROYED_STATUS
        return DoesNotExistInCloudFormation()
    LOGGER.debug(
        "%s:provider status: %s",
        provider.get_stack_name(stack_data),
        provider.get_stack_status(stack_data),
    )
    if provider.is_stack_destroyed(stack_data):
        return DESTROYED_STATUS
    if provider.is_stack_in_progress(stack_data):
        return DESTROYING_STATUS
    if provider.is_stack_destroy_possible(stack_data):
        LOGGER.debug("%s:destroying stack", stack.fqn)
        provider.destroy_stack(stack_data)
        return DESTROYING_STATUS
    LOGGER.critical(
        "%s: %s", stack.fqn, provider.get_delete_failed_status_reason(stack.fqn)
    )
    return FailedStatus(provider.get_stack_status_reason(stack_data))