### Summary

I have an inventory with two hosts, say H1 an H2.
On H2, I execute a task with `delegate_to: H1`. It seems, however, that the task is eventually executed on H2.


### Issue Type

Bug Report

### Component Name

core

### Ansible Version

```console
$ ansible --version
ansible [core 2.11.5] 
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/mrks/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /home/mrks/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.7 (default, Aug 31 2021, 13:28:12) [GCC 11.1.0]
  jinja version = 3.0.2
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed
<none>
```


### OS / Environment

Arch Linux

### Steps to Reproduce

Playbook:
```yaml
- hosts: H2
  tasks:
  - shell: hostname
    register: foo
    delegate_to: H1
  - debug:
    var: foo
```


### Expected Results

Expected foo.stdout = 'H1'.

By the way, I am pretty sure that this worked for a long time.

### Actual Results

```console
TASK [shell] *******************************************************************
changed: [H2 -> H1]

TASK [debug] *******************************************************************
ok: [H2] => {
    "foo": {
...
        "stdout": "H2",
        "stdout_lines": [
            "H2"
        ]
    }
}
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
if cvars.get('ansible_become_method'):
                become_plugin = self._get_become(templar.template(cvars['ansible_become_method']))
            else:
                become_plugin = self._get_become(self._task.become_method)
            try:
                connection.set_become_plugin(become_plugin)
            except AttributeError:
                
                pass
            if getattr(connection.become, 'require_tty', False) and not getattr(connection, 'has_tty', False):
                raise AnsibleError(
                    "The '%s' connection does not provide a TTY which is required for the selected "
                    "become plugin: %s." % (conn_type, become_plugin.name)
                )
            
            
            
            self._play_context.set_become_plugin(become_plugin.name)
        
        self._play_context.set_attributes_from_plugin(connection)
        if any(((connection.supports_persistence and C.USE_PERSISTENT_CONNECTIONS), connection.force_persistence)):
            self._play_context.timeout = connection.get_option('persistent_command_timeout')
            display.vvvv('attempting to start connection', host=self._play_context.remote_addr)
            display.vvvv('using connection plugin %s' % connection.transport, host=self._play_context.remote_addr)
            options = self._get_persistent_connection_options(connection, cvars, templar)
            socket_path = start_connection(self._play_context, options, self._task._uuid)
            display.vvvv('local domain socket path is %s' % socket_path, host=self._play_context.remote_addr)
            setattr(connection, '_socket_path', socket_path)
        return connection
    def _get_persistent_connection_options(self, connection, final_vars, templar):