### Summary

Even though reboot module performs as expected with the versobity 3 (-vvv), when I set it to 4 (-vvvv) it hangs.  I tested 2.9.16, 2.9.27 and 2.12.0.

I specified the `become_method=su`.  When `become_method=sudo`, it timed out after 5 minutes and the job proceeds as expected.



### Issue Type

Bug Report

### Component Name

reboot

### Ansible Version

```console
### RHEL 8.2

$ ansible --version
ansible 2.9.16
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/sugimura/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, Dec  5 2019, 15:45:45) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]

### RHEL 8.5

$ ansible --version
ansible [core 2.12.0]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/sugimura/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  ansible collection location = /home/sugimura/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.8.8 (default, Aug 11 2021, 06:52:42) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
  jinja version = 2.10.3
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed
$

(nothing special)
```


### OS / Environment

RHEL 8.2, 8.5 as a control node.  Managed nodes are also RHEL 8.2 and 8.5 that I tested.




### Steps to Reproduce

### playbook.yml

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
---
- hosts: all
  gather_facts: false
  become: true

  tasks:
    - name: reboot
      reboot:
        post_reboot_delay: 30
```

### inventory

```
$ cat inventory 
### RHEL 8.2
192.168.0.155 ansible_become_method=su
#192.168.0.155 ansible_become_method=sudo

### RHEL 8.5
#192.168.0.154 ansible_become_method=su
#192.168.0.154 ansible_become_method=sudo
#192.168.0.154 ansible_become_method=su ansible_become_password=XXXXXXXX
#192.168.0.154 ansible_become_method=sudo ansible_become_password=XXXXXXXX
```

### command line

When specified `-vvvv`, it hangs.
```
$ ansible-playbook -i inventory playbook.yml -k -K -vvvv
```

On the other hand `-vvv`, it performs successfully.
```
$ ansible-playbook -i inventory playbook.yml -k -K -vvv
```


### Expected Results

It should be the same behavoir as `-vvv` below.

```
$ ansible-playbook -i inventory playbook.yml -k -K -vvv
ansible-playbook [core 2.12.0]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/sugimura/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  ansible collection location = /home/sugimura/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible-playbook
  python version = 3.8.8 (default, Aug 11 2021, 06:52:42) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
  jinja version = 2.10.3
  libyaml = True
Using /etc/ansible/ansible.cfg as config file
SSH password: 
BECOME password[defaults to SSH password]: 
...

Escalation succeeded
<192.168.0.155> (0, b'\r\nroot\r\n', b'Shared connection to 192.168.0.155 closed.\r\n')
reboot: system successfully rebooted
<192.168.0.155> ESTABLISH SSH CONNECTION FOR USER: None
<192.168.0.155> SSH: EXEC sshpass -d10 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=10 -o ControlPath=/home/sugimura/.ansible/cp/23220a1dab 192.168.0.155 '/bin/sh -c '"'"'rm -f -r /home/sugimura/.ansible/tmp/ansible-tmp-1641436348.6996555-196425-83290895724414/ > /dev/null 2>&1 && sleep 0'"'"''
<192.168.0.155> (0, b'', b'')
changed: [192.168.0.155] => {
    "changed": true,
    "elapsed": 30,
    "rebooted": true
}
META: ran handlers
META: ran handlers

PLAY RECAP *******************************************************************************************************************************************************************
192.168.0.155              : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
```



### Actual Results

It hangs.

```console
$ ansible-playbook -i inventory playbook.yml -k -K -vvvv
ansible-playbook [core 2.12.0]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/sugimura/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  ansible collection location = /home/sugimura/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible-playbook
  python version = 3.8.8 (default, Aug 11 2021, 06:52:42) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
  jinja version = 2.10.3
  libyaml = True
Using /etc/ansible/ansible.cfg as config file
SSH password: 
BECOME password[defaults to SSH password]: 
setting up inventory plugins
...
reboot: rebooting server...
<192.168.0.155> ESTABLISH SSH CONNECTION FOR USER: None
<192.168.0.155> SSH: EXEC sshpass -d10 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=10 -o ControlPath=/home/sugimura/.ansible/cp/23220a1dab -tt 192.168.0.155 '/bin/sh -c '"'"'su  root -c '"'"'"'"'"'"'"'"'/bin/sh -c '"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-vqowuwkomqakrqejoekqdcsybawubrge ; /sbin/shutdown -r 0 "Reboot initiated by Ansible"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"''"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<192.168.0.155> (0, b"\r\nShutdown scheduled for Thu 2022-01-06 11:35:37 JST, use 'shutdown -c' to cancel.\r\n", b"OpenSSH_8.0p1, OpenSSL 1.1.1k  FIPS 25 Mar 2021\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug2: checking match for 'final all' host 192.168.0.155 originally 192.168.0.155\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 3: not matched 'final'\r\ndebug2: match not found\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 5: Including file /etc/crypto-policies/back-ends/openssh.config depth 1 (parse only)\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-curve25519-sha256-,gss-nistp256-sha256-,gss-group14-sha256-,gss-group16-sha512-,gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: configuration requests final Match pass\r\ndebug2: resolve_canonicalize: hostname 192.168.0.155 is address\r\ndebug1: re-parsing configuration\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug2: checking match for 'final all' host 192.168.0.155 originally 192.168.0.155\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 3: matched 'final'\r\ndebug2: match found\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 5: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-curve25519-sha256-,gss-nistp256-sha256-,gss-group14-sha256-,gss-group16-sha512-,gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 4 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 196492\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\nShared connection to 192.168.0.155 closed.\r\n")
reboot: waiting an additional 30 seconds
reboot: validating reboot
reboot: attempting to get system boot time
<192.168.0.155> ESTABLISH SSH CONNECTION FOR USER: None
<192.168.0.155> SSH: EXEC sshpass -d10 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=10 -o ControlPath=/home/sugimura/.ansible/cp/23220a1dab -tt 192.168.0.155 '/bin/sh -c '"'"'su  root -c '"'"'"'"'"'"'"'"'/bin/sh -c '"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-fwhdcdmwvpurpzythdrmsmpewqactjox ; cat /proc/sys/kernel/random/boot_id'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"''"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
```

And here is the output with `ANSIBLE_DEBUG=1`.

```
$ ANSIBLE_DEBUG=1 ansible-playbook -i inventory playbook.yml -k -K -vvvv
196531 1641436626.42119: starting run
ansible-playbook [core 2.12.0]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/sugimura/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  ansible collection location = /home/sugimura/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible-playbook
  python version = 3.8.8 (default, Aug 11 2021, 06:52:42) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
  jinja version = 2.10.3
  libyaml = True
Using /etc/ansible/ansible.cfg as config file
SSH password: 
BECOME password[defaults to SSH password]: 
196531 1641436629.13508: Added group all to inventory
196531 1641436629.13525: Added group ungrouped to inventory
196531 1641436629.13535: Group all now contains ungrouped
...
196536 1641436660.99666: become_success: (source=stderr, state=awaiting_prompt): 'debug2: mux_master_process_new_session: channel 1: request tty 1, X 0, agent 0, subsys 0, term "xterm-256color", cmd "/bin/sh -c 'su  root -c '"'"'/bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-ozdcnvzirtcdftqbszityhfgcukzjzoe ; cat /proc/sys/kernel/random/boot_id'"'"'"'"'"'"'"'"''"'"' && sleep 0'", env 1'
Escalation succeeded
196536 1641436661.18745: stderr chunk (state=3):
>>>debug3: receive packet: type 80
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
<<<
196536 1641436661.22876: stderr chunk (state=3):
>>>debug3: receive packet: type 91
debug2: channel_input_open_confirmation: channel 2: callback start
debug2: client_session2_setup: id 2
debug2: channel 2: request pty-req confirm 1
debug3: send packet: type 98
<<<
196536 1641436661.22899: stderr chunk (state=3):
>>>debug1: Sending environment.
debug1: Sending env LANG = ja_JP.UTF-8
debug2: channel 2: request env confirm 0
debug3: send packet: type 98
debug1: Sending command: /bin/sh -c 'su  root -c '"'"'/bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-ozdcnvzirtcdftqbszityhfgcukzjzoe ; cat /proc/sys/kernel/random/boot_id'"'"'"'"'"'"'"'"''"'"' && sleep 0'
debug2: channel 2: request exec confirm 1
debug3: send packet: type 98
debug3: mux_session_confirm: sending success reply
debug2: channel_input_open_confirmation: channel 2: callback done
debug2: channel 2: open confirm rwindow 0 rmax 32768
<<<
196536 1641436661.23997: stderr chunk (state=3):
>>>debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 2
debug2: PTY allocation request accepted on channel 2
debug2: channel 2: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 2
debug2: exec request accepted on channel 2
<<<
196536 1641436661.61510: stdout chunk (state=3):
>>>パスワード:<<<
```

The `パスワード:` means `Password:` in Japanese.  I tested with `LANG=C`, it is the same behavior.

```
...
debug1: Sending command: /bin/sh -c 'su  root -c '"'"'/bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-xmjdcyhcajgoprxvrmtkyqdyufnzfdeo ; cat /proc/sys/kernel/random/boot_id'"'"'"'"'"'"'"'"''"'"' && sleep 0'
debug2: channel 2: request exec confirm 1
debug3: send packet: type 98
<<<
196581 1641436784.82305: stderr chunk (state=3):
>>>debug3: mux_session_confirm: sending success reply
debug2: channel_input_open_confirmation: channel 2: callback done
debug2: channel 2: open confirm rwindow 0 rmax 32768
<<<
196581 1641436784.83332: stderr chunk (state=3):
>>>debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 2
debug2: PTY allocation request accepted on channel 2
debug2: channel 2: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 2
debug2: exec request accepted on channel 2
<<<
196581 1641436785.19981: stdout chunk (state=3):
>>>Password: <<<
```
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
remaining_tries = int(self.get_option('reconnection_retries')) + 1
        cmd_summary = u"%s..." % to_text(args[0])
        conn_password = self.get_option('password') or self._play_context.password
        for attempt in range(remaining_tries):
            cmd = args[0]
            if attempt != 0 and conn_password and isinstance(cmd, list):
                
                self.sshpass_pipe = os.pipe()
                cmd[1] = b'-d' + to_bytes(self.sshpass_pipe[0], nonstring='simplerepr', errors='surrogate_or_strict')
            try:
                try:
                    return_tuple = func(self, *args, **kwargs)
                    
                    if self._play_context.no_log:
                        display.vvv(u'rc=%s, stdout and stderr censored due to no log' % return_tuple[0], host=self.host)
                    else:
                        display.vvv(return_tuple, host=self.host)
                    
                    
                    
                except (AnsibleControlPersistBrokenPipeError):
                    
                    cmd = args[0]
                    if conn_password and isinstance(cmd, list):