<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->
after upgrade from 2.9.9 to 2.9.10 we see an exception in a task using ~~lineinfile~~ `delegate_facts=true`

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
2.9.10
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
ANSIBLE_NOCOWS(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = True
ANSIBLE_PIPELINING(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = True
ANSIBLE_SSH_ARGS(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
CACHE_PLUGIN(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = .cache/facts
CACHE_PLUGIN_TIMEOUT(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = 86400
COLLECTIONS_PATHS(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = [u'/home/rmoser/Projects/puzzle/ansible-puzzle/collections_galaxy']
CONDITIONAL_BARE_VARS(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = False
DEFAULT_BECOME(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = True
DEFAULT_BECOME_ASK_PASS(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = False
DEFAULT_BECOME_METHOD(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = sudo
DEFAULT_BECOME_USER(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = root
DEFAULT_FORKS(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = 20
DEFAULT_GATHERING(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = smart
DEFAULT_HOST_LIST(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = [u'/home/rmoser/Projects/puzzle/ansible-puzzle/inventories/cloud_staging']
DEFAULT_LOAD_CALLBACK_PLUGINS(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = False
DEFAULT_MANAGED_STR(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = Warning: File is managed by Ansible
DEFAULT_PRIVATE_KEY_FILE(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = /home/rmoser/.ssh/id_rsa
DEFAULT_REMOTE_USER(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = ansible
DEFAULT_ROLES_PATH(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = [u'/home/rmoser/Projects/puzzle/ansible-puzzle/roles_galaxy', u'/home/rmoser/Projects/puzzle/ansible-puzzle/roles']
DEFAULT_STDOUT_CALLBACK(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = yaml
HOST_KEY_CHECKING(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = True
INTERPRETER_PYTHON(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = auto
RETRY_FILES_ENABLED(/home/rmoser/Projects/puzzle/ansible-puzzle/ansible.cfg) = False

```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->


##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml
---
- hosts: my.example.com
  gather_facts: yes
  tasks:
  - name: make something
    delegate_facts: True
    delegate_to: other.example.com
    lineinfile:
      path: /tmp/foo.txt
      regexp: '^Listen '
      insertafter: '^#Listen '
      line: Listen 8080

```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->


##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes -->
```paste below
The full traceback is:
Traceback (most recent call last):
  File "/home/rmoser/Projects/resmo/ansible/lib/ansible/executor/task_executor.py", line 146, in run
    res = self._execute()
  File "/home/rmoser/Projects/resmo/ansible/lib/ansible/executor/task_executor.py", line 654, in _execute
    result = self._handler.run(task_vars=variables)
  File "/home/rmoser/Projects/resmo/ansible/lib/ansible/plugins/action/normal.py", line 46, in run
    result = merge_hash(result, self._execute_module(task_vars=task_vars, wrap_async=wrap_async))
  File "/home/rmoser/Projects/resmo/ansible/lib/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 "/home/rmoser/Projects/resmo/ansible/lib/ansible/plugins/action/__init__.py", line 244, in _configure_module
    return (module_style, module_shebang, module_data, module_path)
UnboundLocalError: local variable 'module_style' referenced before assignment
fatal: [server.example.com]: FAILED! => 
  msg: Unexpected failure during module execution.
  stdout: ''

```

"""Method to perform a clean up at the end of an action plugin execution
        By default this is designed to clean up the shell tmpdir, and is toggled based on whether
        async is in use
        Action plugins may override this if they deem necessary, but should still call this method
        via super
        """
        if force or not self._task.async_val:
            self._remove_tmp_path(self._connection._shell.tmpdir)
    def get_plugin_option(self, plugin, option, default=None):
        """Helper to get an option from a plugin without having to use
        the try/except dance everywhere to set a default
        """
        try:
            return plugin.get_option(option)
        except (AttributeError, KeyError):
            return default
    def get_become_option(self, option, default=None):
        return self.get_plugin_option(self._connection.become, option, default=default)
    def get_connection_option(self, option, default=None):
        return self.get_plugin_option(self._connection, option, default=default)
    def get_shell_option(self, option, default=None):
        return self.get_plugin_option(self._connection._shell, option, default=default)
    def _remote_file_exists(self, path):
        cmd = self._connection._shell.exists(path)
        result = self._low_level_execute_command(cmd=cmd, sudoable=True)
        if result['rc'] == 0:
            return True
        return False
    def _configure_module(self, module_name, module_args, task_vars=None):