##### SUMMARY

I was working on an example of what _not_ to do—namely, using the `yum` module instead of `package` for something meant to be platform agnostic... but then I realized my example (using the `yum` module on Debian) _actually worked_.

When I ran the `yum` task with `-vvvv` I found:

```
Running apt as the backend for the yum action plugin
Using module file /usr/local/lib/python2.7/dist-packages/ansible/modules/packaging/os/apt.py
```

Is this a bug? A feature? I found it can also lead to unexpected weird behavior that I believe is due to strange fallback behavior.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
yum

##### ANSIBLE VERSION

```paste below
ansible 2.8.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/Users/jgeerling/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python2.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.16 (default, Apr 12 2019, 15:32:40) [GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.46.3)]
```

##### CONFIGURATION
```paste below
N/A
```

##### OS / ENVIRONMENT
Debian 10


##### STEPS TO REPRODUCE

1. Run a Docker image with Debian 10.

       docker run -it geerlingguy/docker-debian10-ansible /bin/bash

1. Check if stress installed. Nothing listed.

       apt list --installed | grep stress

1. Create a playbook for demonstration.

       cat << EOF > main.yml
       ---
       - hosts: localhost
         gather_facts: false
         connection: local
       
         tasks:
           - apt: update_cache=true
           - yum: name=stress state=present
       EOF

1. Run the playbook.

       ansible-playbook main.yml

1. Check if stress installed.

       apt list --installed | grep stress
       stress/stable,now 1.0.4-4 amd64 [installed]

When run with `-vvvv`, the `yum` task gives: https://pastebin.com/Q4SSduVH

##### EXPECTED RESULTS
I expected a task failure, saying something like "`yum` or `dnf` are not available on this system."

##### ACTUAL RESULTS

The task worked. It said 'changed' or 'ok' and worked idempotently.

I was bewildered. Surprise was apparent. I even said something in IRC about it.
TRANSFERS_FILES = False
    def run(self, tmp=None, task_vars=None):
        '''
        Action plugin handler for yum3 vs yum4(dnf) operations.
        Enables the yum module to use yum3 and/or yum4. Yum4 is a yum
        command-line compatibility layer on top of dnf. Since the Ansible
        modules for yum(aka yum3) and dnf(aka yum4) call each of yum3 and yum4's
        python APIs natively on the backend, we need to handle this here and
        pass off to the correct Ansible module to execute on the remote system.
        '''
        self._supports_check_mode = True
        self._supports_async = True
        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  
        
        module = self._task.args.get('use_backend', "auto")
        if module == 'auto':
            try:
                if self._task.delegate_to:  
                    module = self._templar.template("{{hostvars['%s']['ansible_facts']['pkg_mgr']}}" % self._task.delegate_to)
                else:
                    module = self._templar.template("{{ansible_facts.pkg_mgr}}")
            except Exception:
                pass  
        if module not in ["yum", "yum4", "dnf"]:
            facts = self._execute_module(module_name="setup", module_args=dict(filter="ansible_pkg_mgr", gather_subset="!all"), task_vars=task_vars)
            display.debug("Facts %s" % facts)
            module = facts.get("ansible_facts", {}).get("ansible_pkg_mgr", "auto")