<!--- 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 -->
This issue is identical to #70238, except that instead of the managed node being an ESXi host running Python 3.5, the managed host is a RedHat Enterprise Linux 3 host running Python 2.7

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
- setup
- shell (but only when `become` is used)

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.10.1rc3
  config file = /Users/alex/Projects/work/ansible/ansible.cfg
  configured module search path = ['/Users/alex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.7.7 (default, Mar 10 2020, 15:43:03) [Clang 11.0.0 (clang-1100.0.33.17)]
```
Also confirmed issue occurs with ansible 2.9.13

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
DEFAULT_BECOME_METHOD(/Users/alex/Projects/work/ansible/ansible.cfg) = su
DEFAULT_REMOTE_USER(/Users/alex/Projects/work/ansible/ansible.cfg) = alext
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
```
[alext@host ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux AS release 3 (Taroon Update 9)
[alext@host ~]$ uname -r
2.4.21-37.ELsmp
[alext@host ~]$ bin/python -V
Python 2.7.17
```

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

<!--- Paste example playbooks or commands between quotes below -->
```sh
ansible -i inventory/test-host.yml -m shell -a 'whoami' --become host
```

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

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
```sh
host | CHANGED | rc=0 >>
root
```

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

<!--- Paste verbatim command output between quotes -->
```paste below
host | FAILED | rc=38 >>
[Errno 38] Function not implemented
```
and with `-vvv`, the following traceback:
```
The full traceback is:
WARNING: The below traceback may *not* be related to the actual failure.
  File "/tmp/ansible_ansible.legacy.command_payload_Bgr88e/ansible_ansible.legacy.command_payload.zip/ansible/module_utils/basic.py", line 2720, in run_command
    selector = selectors.DefaultSelector()
  File "/tmp/ansible_ansible.legacy.command_payload_Bgr88e/ansible_ansible.legacy.command_payload.zip/ansible/module_utils/compat/_selectors2.py", line 423, in __init__
    self._epoll = select.epoll()
host | FAILED | rc=38 >>
[Errno 38] Function not implemented
```
warn(warning)
        self.log('[WARNING] %s' % warning)
    def deprecate(self, msg, version=None, date=None, collection_name=None):
        if version is not None and date is not None:
            raise AssertionError("implementation error -- version and date must not both be set")
        deprecate(msg, version=version, date=date, collection_name=collection_name)
        
        
        if date is not None:
            self.log('[DEPRECATION WARNING] %s %s' % (msg, date))
        else:
            self.log('[DEPRECATION WARNING] %s %s' % (msg, version))
    def load_file_common_arguments(self, params, path=None):
        '''
        many modules deal with files, this encapsulates common
        options that the file module accepts such that it is directly
        available to all modules and they can share code.
        Allows to overwrite the path/dest module argument by providing path.
        '''
        if path is None:
            path = params.get('path', params.get('dest', None))
        if path is None:
            return {}
        else:
            path = os.path.expanduser(os.path.expandvars(path))
        b_path = to_bytes(path, errors='surrogate_or_strict')