### SUMMARY
After updating from ansible 2.9.9 to ansible 2.9.10 the delegate on one of our playbooks stopped working

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
delegate_to

##### ANSIBLE VERSION
It does NOT work with following version of Ansible:
```
# ansible --version
ansible 2.9.10
  config file = /root/.ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Sep 26 2019, 13:23:47) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
# 
```

It works using the following version of Ansible:
```
# ansible --version
ansible 2.9.9
  config file = /root/.ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Sep 26 2019, 13:23:47) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
#
```

##### CONFIGURATION
```
# ansible-config dump --only-changed
CACHE_PLUGIN(/root/.ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/root/.ansible.cfg) = /tmp/ansible_fact_cache
CACHE_PLUGIN_TIMEOUT(/root/.ansible.cfg) = 3600
DEFAULT_CALLBACK_WHITELIST(/root/.ansible.cfg) = [u'timer', u'mail']
DEFAULT_FORKS(/root/.ansible.cfg) = 50
DEFAULT_GATHERING(/root/.ansible.cfg) = smart
DEFAULT_HOST_LIST(/root/.ansible.cfg) = [u'/<inventory script>']
DEFAULT_MANAGED_STR(/root/.ansible.cfg) = Ansible managed, do not manually edit: {file}
DISPLAY_SKIPPED_HOSTS(/root/.ansible.cfg) = False
INTERPRETER_PYTHON(/root/.ansible.cfg) = auto_legacy_silent
RETRY_FILES_SAVE_PATH(/root/.ansible.cfg) = /tmp
TRANSFORM_INVALID_GROUP_CHARS(/root/.ansible.cfg) = ignore
#
```

##### OS / ENVIRONMENT
Red Hat Enterprise Linux Server 7.8

##### STEPS TO REPRODUCE
Before running another task, we need to check if an application is running on the App server using the delegate:
```yaml
  - name: Get app running processes
    shell: "ps aux | grep app | grep -v grep"
    changed_when: False
    check_mode: no
    ignore_errors: yes
    register: app_processes
    delegate_to: "{{ vars[app_server] }}"
```
this is no longer working using Ansible 2.9.10

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
```
TASK [Get App running processes] ******************************************************************************************************************************************************************************
ok: [<server hostname>] => {
    "changed": false, 
    "cmd": "ps aux | grep app | grep -v grep", 
    "delta": "0:00:00.018218", 
    "end": "2020-08-04 18:08:32.061806", 
    "invocation": {
        "module_args": {
            "_raw_params": "ps aux | grep app | grep -v grep", 
            "_uses_shell": true, 
            "argv": null, 
            "chdir": null, 
            "creates": null, 
            "executable": null, 
            "removes": null, 
            "stdin": null, 
            "stdin_add_newline": true, 
            "strip_empty_ends": true, 
            "warn": true
        }
    }, 
    "rc": 0, 
    "start": "2020-08-04 18:08:32.043588", 
    "stderr": "", 
    "stderr_lines": [], 
    "stdout": "app running info", 
    "stdout_lines": [
        "app running info"
    ]
}
```
##### ACTUAL RESULTS
It fails with the following error:

```
TASK [Get App running processes] ******************************************************************************************************************************************************************************
The full traceback is:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 146, in run
    res = self._execute()
  File "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 654, in _execute
    result = self._handler.run(task_vars=variables)
  File "/usr/lib/python2.7/site-packages/ansible/plugins/action/shell.py", line 27, in run
    result = command_action.run(task_vars=task_vars)
  File "/usr/lib/python2.7/site-packages/ansible/plugins/action/command.py", line 24, in run
    results = merge_hash(results, self._execute_module(task_vars=task_vars, wrap_async=wrap_async))
  File "/usr/lib/python2.7/site-packages/ansible/plugins/action/__init__.py", line 831, in _execute_module
    (module_style, shebang, module_data, module_path) = self._configure_module(module_name=module_name, module_args=module_args, task_vars=task_vars)
  File "/usr/lib/python2.7/site-packages/ansible/plugins/action/__init__.py", line 165, in _configure_module
    use_vars = task_vars.get('ansible_delegated_vars')[self._task.delegate_to]
KeyError: u'<server hostname>'
fatal: [<server hostname running the app>]: FAILED! => {
    "msg": "Unexpected failure during module execution.", 
    "stdout": ""
}
...ignoring
```

_hosts_all=_hosts_all,
        )
        _vars_sources = {}
        def _combine_and_track(data, new_data, source):
            '''
            Wrapper function to update var sources dict and call combine_vars()
            See notes in the VarsWithSources docstring for caveats and limitations of the source tracking
            '''
            if C.DEFAULT_DEBUG:
                
                for key in new_data:
                    _vars_sources[key] = source
            return combine_vars(data, new_data)
        
        basedirs = []
        if self.safe_basedir:  
            basedirs = [self._loader.get_basedir()]
        if play:
            
            
            for role in play.get_roles():
                all_vars = _combine_and_track(all_vars, role.get_default_vars(), "role '%s' defaults" % role.name)
        if task:
            
            if C.PLAYBOOK_VARS_ROOT == 'all':  
                basedirs = task.get_search_path()
            elif C.PLAYBOOK_VARS_ROOT in ('bottom', 'playbook_dir'):  
                basedirs = [task.get_search_path()[0]]
            elif C.PLAYBOOK_VARS_ROOT != 'top':