<!--- 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
```
''' log that ansible ran the module '''
        
        
        log_args = dict()
        for param in self.params:
            canon = self.aliases.get(param, param)
            arg_opts = self.argument_spec.get(canon, {})
            no_log = arg_opts.get('no_log', None)
            
            if no_log is None and PASSWORD_MATCH.search(param):
                log_args[param] = 'NOT_LOGGING_PASSWORD'
                self.warn('Module did not set no_log for %s' % param)
            elif self.boolean(no_log):
                log_args[param] = 'NOT_LOGGING_PARAMETER'
            else:
                param_val = self.params[param]
                if not isinstance(param_val, (text_type, binary_type)):
                    param_val = str(param_val)
                elif isinstance(param_val, text_type):
                    param_val = param_val.encode('utf-8')
                log_args[param] = heuristic_log_sanitize(param_val, self.no_log_values)
        msg = ['%s=%s' % (to_native(arg), to_native(val)) for arg, val in log_args.items()]
        if msg:
            msg = 'Invoked with %s' % ' '.join(msg)
        else:
            msg = 'Invoked'
        self.log(msg, log_args=log_args)
    def _set_cwd(self):