### Apache Airflow version

2.2.0 (latest released)

### Operating System

Container-Optimized OS with Containerd (cos_containerd) - GKE

### Versions of Apache Airflow Providers

_No response_

### Deployment

Astronomer

### Deployment details

_No response_

### What happened

I went to clear a successful task instance that is using a Deferred operator, and noticed it immediately went into a state of successful. The Operator is designed to run a trigger that will wait 1 minute from approximately task start. Upon investigation, I did not see the following in the second run's task log: `{taskinstance.py:1332} INFO - Pausing task as DEFERRED.`.

### What you expected to happen

I would expect the task to once again go into a state of deferred for approx. 1 minute and then succeed.

### How to reproduce

Run the following DAG. Once a task instance is successful, clear it, and see the task fail. This confirms `ti.next_method` was not cleared, as `execute` did not rerun and reset `execute_try_number`. `execute` did not rerun, as `ti.next_method` was not cleared.

```
from datetime import datetime

from airflow import DAG
from airflow.exceptions import AirflowException
from airflow.models import BaseOperator
from airflow.triggers.testing import SuccessTrigger


class RetryOperator(BaseOperator):
    def execute(self, context):
        ti = context["ti"]
        next_method = ti.next_method
        try_number = ti.try_number

        self.log.info(
            f"In `execute`: try_number: {try_number}, next_method {next_method}."
        )

        self.defer(
            trigger=SuccessTrigger(),
            method_name="next",
            kwargs={"execute_try_number": try_number},
        )

    def next(self, context, execute_try_number, event=None):
        ti = context["ti"]
        next_method = ti.next_method
        try_number = ti.try_number

        self.log.info(
            f"In `next`: try_number: {try_number}, next_method {next_method}, execute_try_number: {execute_try_number}."
        )

        if execute_try_number != try_number:
            raise AirflowException("`execute` wasn't run during clear!")

        return None  # Success!


with DAG(
    "triggerer_clear", schedule_interval=None, start_date=datetime(2021, 10, 20)
) as dag:
    RetryOperator(task_id="clear")
```

### Anything else

I believe this is due to `ti.next_method` (and `ti.next_method_kwargs`) not being cleared after a task has completed. A similar issue was raised in https://github.com/apache/airflow/issues/18146.

### Are you willing to submit PR?

- [X] 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)

tests/models/test_taskinstance.py
with dag_maker(dag_id='test_not_requeue_non_requeueable_task_instance'):
            task = BaseSensorOperator(
                task_id='test_not_requeue_non_requeueable_task_instance_op',
                pool='test_pool',
            )
        ti = dag_maker.create_dagrun(execution_date=timezone.utcnow()).task_instances[0]
        ti.task = task
        ti.state = State.QUEUED
        with create_session() as session:
            session.add(ti)
            session.commit()
        all_deps = RUNNING_DEPS | task.deps
        all_non_requeueable_deps = all_deps - REQUEUEABLE_DEPS
        patch_dict = {}
        for dep in all_non_requeueable_deps:
            class_name = dep.__class__.__name__
            dep_patch = patch(f'{dep.__module__}.{class_name}.{dep._get_dep_statuses.__name__}')
            method_patch = dep_patch.start()
            method_patch.return_value = iter([TIDepStatus('mock_' + class_name, True, 'mock')])
            patch_dict[class_name] = (dep_patch, method_patch)
        for class_name, (dep_patch, method_patch) in patch_dict.items():
            method_patch.return_value = iter([TIDepStatus('mock_' + class_name, False, 'mock')])
            ti.run()
            assert ti.state == State.QUEUED
            dep_patch.return_value = TIDepStatus('mock_' + class_name, True, 'mock')
        for (dep_patch, method_patch) in patch_dict.values():
            dep_patch.stop()
    def test_mark_non_runnable_task_as_success(self, create_task_instance):