<!--- 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

After upgrading ansible-base from 2.10.5 to 2.10.6, I can no longer run sudo commands on localhost. I noticed that disabling SSH pipelinging allows sudo commands to run again. The issue also affects latest git version.

git bisect points to 3ef061bdc4610bbf213f70bc70976fdc3005e2cc, which is from #73281 (2.10), #73023 (devel)

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
connection

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
$ ~/.local/bin/ansible --version
[WARNING]: You are running the development version of Ansible. You should only run Ansible from "devel" if you are modifying the Ansible engine, or trying
out features under development. This is a rapidly changing source of code and can become unstable at any point.
ansible 2.11.0.dev0 (devel 5078a0baa2) last updated 2021/02/21 17:08:03 (GMT +800)
  config file = /home/yen/tmp/ansible-bug/ansible.cfg
  configured module search path = ['/home/yen/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/yen/tmp/ansible/lib/ansible
  ansible collection location = /home/yen/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/yen/.local/bin/ansible
  python version = 3.9.1 (default, Feb  6 2021, 06:49:13) [GCC 10.2.0]
  jinja version = 2.11.3
  libyaml = True
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
$ ~/.local/bin/ansible-config dump --only-changed
[WARNING]: You are running the development version of Ansible. You should only run Ansible from "devel" if you are modifying the Ansible engine, or trying out features under development. This is a rapidly changing source of code and can become unstable at any point.
ANSIBLE_PIPELINING(/home/yen/tmp/ansible-bug/ansible.cfg) = True
ANSIBLE_SSH_CONTROL_PATH_DIR(env: ANSIBLE_SSH_CONTROL_PATH_DIR) = /run/user/1000/ansible/cp
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Controller & target: Arch Linux, sudo 1.9.5.p2
Networking: should be irrelevant

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

```
$ cat ansible.cfg
[ssh_connection]
pipelining = True
$ cat inventory
localhost ansible_connection=local
$ ~/.local/bin/ansible -i inventory localhost -m ping --become --ask-become-pass -vvvvvv
```

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

##### EXPECTED RESULTS

I got a pong response

##### ACTUAL RESULTS

```paste below
[WARNING]: You are running the development version of Ansible. You should only run Ansible from "devel" if you are modifying the Ansible engine, or trying out features under development. This is a rapidly changing source of code and can become unstable at any point.
ansible 2.11.0.dev0 (devel 5078a0baa2) last updated 2021/02/21 17:08:03 (GMT +800)
  config file = /home/yen/tmp/ansible-bug/ansible.cfg
  configured module search path = ['/home/yen/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/yen/tmp/ansible/lib/ansible
  ansible collection location = /home/yen/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/yen/.local/bin/ansible
  python version = 3.9.1 (default, Feb  6 2021, 06:49:13) [GCC 10.2.0]
  jinja version = 2.11.3
  libyaml = True
Using /home/yen/tmp/ansible-bug/ansible.cfg as config file
BECOME password:
setting up inventory plugins
host_list declined parsing /home/yen/tmp/ansible-bug/inventory as it did not pass its verify_file() method
script declined parsing /home/yen/tmp/ansible-bug/inventory as it did not pass its verify_file() method
auto declined parsing /home/yen/tmp/ansible-bug/inventory as it did not pass its verify_file() method
Set default localhost to localhost
Parsed /home/yen/tmp/ansible-bug/inventory inventory source with ini plugin
Loading callback plugin minimal of type stdout, v2.0 from /home/yen/tmp/ansible/lib/ansible/plugins/callback/minimal.py
Attempting to use 'default' callback.
Skipping callback 'default', as we already have a stdout callback.
Attempting to use 'junit' callback.
Attempting to use 'minimal' callback.
Skipping callback 'minimal', as we already have a stdout callback.
Attempting to use 'oneline' callback.
Skipping callback 'oneline', as we already have a stdout callback.
Attempting to use 'tree' callback.
META: ran handlers
Including module_utils file ansible/__init__.py
Including module_utils file ansible/module_utils/__init__.py
Including module_utils file ansible/module_utils/basic.py
Including module_utils file ansible/module_utils/_text.py
Including module_utils file ansible/module_utils/common/_collections_compat.py
Including module_utils file ansible/module_utils/common/__init__.py
Including module_utils file ansible/module_utils/common/_json_compat.py
Including module_utils file ansible/module_utils/common/_utils.py
Including module_utils file ansible/module_utils/common/file.py
Including module_utils file ansible/module_utils/common/parameters.py
Including module_utils file ansible/module_utils/common/collections.py
Including module_utils file ansible/module_utils/common/process.py
Including module_utils file ansible/module_utils/common/sys_info.py
Including module_utils file ansible/module_utils/common/text/converters.py
Including module_utils file ansible/module_utils/common/text/__init__.py
Including module_utils file ansible/module_utils/common/text/formatters.py
Including module_utils file ansible/module_utils/common/validation.py
Including module_utils file ansible/module_utils/common/warnings.py
Including module_utils file ansible/module_utils/compat/selectors.py
Including module_utils file ansible/module_utils/compat/__init__.py
Including module_utils file ansible/module_utils/compat/_selectors2.py
Including module_utils file ansible/module_utils/compat/selinux.py
Including module_utils file ansible/module_utils/distro/__init__.py
Including module_utils file ansible/module_utils/distro/_distro.py
Including module_utils file ansible/module_utils/parsing/convert_bool.py
Including module_utils file ansible/module_utils/parsing/__init__.py
Including module_utils file ansible/module_utils/pycompat24.py
Including module_utils file ansible/module_utils/six/__init__.py
<localhost> Attempting python interpreter discovery
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: yen
<localhost> EXEC /bin/sh -c 'echo PLATFORM; uname; echo FOUND; command -v '"'"'/usr/bin/python'"'"'; command -v '"'"'python3.9'"'"'; command -v '"'"'python3.8'"'"'; command -v '"'"'python3.7'"'"'; command -v '"'"'python3.6'"'"'; command -v '"'"'python3.5'"'"'; command -v '"'"'python2.7'"'"'; command -v '"'"'python2.6'"'"'; command -v '"'"'/usr/libexec/platform-python'"'"'; command -v '"'"'/usr/bin/python3'"'"'; command -v '"'"'python'"'"'; echo ENDFOUND && sleep 0'
<localhost> EXEC /bin/sh -c '/usr/bin/python && sleep 0'
<localhost> Python interpreter discovery fallback (unable to get Linux distribution/version info)
Using module file /home/yen/tmp/ansible/lib/ansible/modules/ping.py
Pipelining is enabled.
<localhost> EXEC /bin/sh -c 'sudo -H -S  -p "[sudo via ansible, key=gocqypxznauqdyyqcjlbajubbcpgfkxz] password:" -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-gocqypxznauqdyyqcjlbajubbcpgfkxz ; /usr/bin/python'"'"' && sleep 0'
```

And then hangs forever.
response = Response(tuple(to_text(v) if isinstance(v, binary_type) else v for v in resptuple))
            
            if from_exec:
                display.vvvvv('WINRM RESULT %r' % to_text(response), host=self._winrm_host)
            else:
                display.vvvvvv('WINRM RESULT %r' % to_text(response), host=self._winrm_host)
            display.vvvvvv('WINRM STDOUT %s' % to_text(response.std_out), host=self._winrm_host)
            display.vvvvvv('WINRM STDERR %s' % to_text(response.std_err), host=self._winrm_host)
            if stdin_push_failed:
                
                
                try:
                    filtered_output, dummy = _filter_non_json_lines(response.std_out)
                    json.loads(filtered_output)
                except ValueError:
                    
                    stderr = to_bytes(response.std_err, encoding='utf-8')
                    if stderr.startswith(b"#< CLIXML"):
                        stderr = _parse_clixml(stderr)
                    raise AnsibleError('winrm send_input failed; \nstdout: %s\nstderr %s'
                                       % (to_native(response.std_out), to_native(stderr)))
            return response
        except requests.exceptions.Timeout as exc:
            raise AnsibleConnectionFailure('winrm connection error: %s' % to_native(exc))
        finally:
            if command_id:
                self.protocol.cleanup_command(self.shell_id, command_id)
    def _connect(self):