### Apache Airflow Provider(s)

amazon

### Versions of Apache Airflow Providers

_No response_

### Apache Airflow version

2.5.0

### Operating System

MacOS

### Deployment

Virtualenv installation

### Deployment details

_No response_

### What happened

Discussed in #28294

### What you think should happen instead

_No response_

### How to reproduce

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

test_id = "test_id"
        test_data = [self._generate_response(test_id, "Pending") for i in range(2)]
        test_data.append(self._generate_response(test_id, "Failed"))
        mock_get_state.side_effect = test_data
        with pytest.raises(AirflowException) as ex_message:
            waiter(
                get_state_callable=get_state_test,
                get_state_args={"test_id": test_id},
                parse_response=["Status", "State"],
                desired_state=SUCCESS_STATES,
                failure_states=FAILURE_STATES,
                object_type="test_object",
                action="testing",
                check_interval_seconds=1,
                countdown=5,
            )
        assert mock_get_state.call_count == 3
        assert "Test_Object reached failure state Failed." in str(ex_message.value)
    @mock.patch("tests.providers.amazon.aws.utils.test_waiter.get_state_test")
    @mock.patch("time.sleep", return_value=None)
    def test_waiter_multiple_attempts_pending(self, _, mock_get_state):