### Summary

When I perform a reboot with Ubuntu 18.04 or 20.04 remote host and with verbosity set to connection debug (-vvvv) reboot fails after a long time (several hours, much more than reboot_timeout). If I set it to debug (-vvv) it works like expected.

Tested with a Centos 7 remote host and it is not concerned by this bug. 

This bug can be reproduced with devel branch but was discovered on 2.10 version

### Issue Type

Bug Report

### Component Name

reboot

### Ansible Version

```console
$ ansible --version
ansible 2.10.7
```


### Configuration

```console
$ ansible-config dump --only-changed
ANSIBLE_SSH_ARGS(ansible.cfg) = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null
HOST_KEY_CHECKING(ansible.cfg) = False
```


### OS / Environment

Control Node: Ubuntu 20.04
Remote node: Ubuntu 20.04 and 18.04

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
- name: "Dumb playbook"
  hosts:
    - My-Remote-Host
  gather_facts: false
  tasks:
    - name: Reboot
      reboot:
      become: True
      become_method: sudo
```


### Expected Results

```
<X.X.X.X> SSH: EXEC sshpass -d12 ssh -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=22 -o 'User="host-user"' -o ConnectTimeout=10 -o ControlPath=~/.ansible/cp/02ec46349a -tt X.X.X.X '/bin/sh -c '"'"'sudo -H -S  -p "[sudo via ansible, key=tzyslkziuuaepfcbrlaamnnnwqdftlts] password:" -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-tzyslkziuuaepfcbrlaamnnnwqdftlts ; cat /proc/sys/kernel/random/boot_id'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<X.X.X.X> (0, b'\r\n9eba9e53-7bd2-4178-8d58-65f090990e83\r\n', b"Warning: Permanently added 'X.X.X.X' (ECDSA) to the list of known hosts.\r\nShared connection to X.X.X.X closed.\r\n")
reboot: attempting post-reboot test command
<X.X.X.X> ESTABLISH SSH CONNECTION FOR USER: host-user
<X.X.X.X> SSH: EXEC sshpass -d12 ssh -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=22 -o 'User="host-user"' -o ConnectTimeout=10 -o ControlPath=~/.ansible/cp/02ec46349a -tt X.X.X.X '/bin/sh -c '"'"'sudo -H -S  -p "[sudo via ansible, key=mqdzbdqgyzzzqykxxumonzhvcptnfnqa] password:" -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-mqdzbdqgyzzzqykxxumonzhvcptnfnqa ; whoami'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<X.X.X.X> (0, b'\r\nroot\r\n', b'Shared connection to X.X.X.X closed.\r\n')
reboot: system successfully rebooted
<X.X.X.X> ESTABLISH SSH CONNECTION FOR USER: host-user
<X.X.X.X> SSH: EXEC sshpass -d12 ssh -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=22 -o 'User="host-user"' -o ConnectTimeout=10 -o ControlPath=~/.ansible/cp/02ec46349a X.X.X.X '/bin/sh -c '"'"'rm -f -r /home/host-user/.ansible/tmp/ansible-tmp-1619445760.4098256-1763116-260472738004687/ > /dev/null 2>&1 && sleep 0'"'"''
<X.X.X.X> (0, b'', b'')
changed: [My-Remote-Host] => {
    "changed": true,
    "elapsed": 21,
    "rebooted": true
}
META: ran handlers
META: ran handlers
```

### Actual Results

```console
<X.X.X.X> SSH: EXEC sshpass -d10 ssh -vvv -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=22 -o 'User="host-user"' -o ConnectTimeout=10 -o ControlPath=~/.ansible/cp/02ec46349a -tt X.X.X.X '/bin/sh -c '"'"'sudo -H -S  -p "[sudo via ansible, key=ptpwkfkjmbkbufkguzcinvxkirsrvysf] password:" -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-ptpwkfkjmbkbufkguzcinvxkirsrvysf ; cat /proc/sys/kernel/random/boot_id'"'"'"'"'"'"'"'"' && sleep 0'"'"''
<X.X.X.X> (255, b'', b'OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f  31 Mar 2020\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files\r\ndebug1: /etc/ssh/ssh_config line 21: Applying options for *\r\ndebug2: resolve_canonicalize: hostname X.X.X.X is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: Control socket "~/.ansible/cp/02ec46349a" does not exist\r\ndebug2: ssh_connect_direct\r\ndebug1: Connecting to X.X.X.X [X.X.X.X] port 22.\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug1: connect to address X.X.X.X port 22: Connection refused\r\nssh: connect to host X.X.X.X port 22: Connection refused\r\n')
sending connection check: [b'sshpass', b'-d10', b'ssh', b'-vvv', b'-o', b'ControlMaster=auto', b'-o', b'ControlPersist=60s', b'-o', b'UserKnownHostsFile=/dev/null', b'-o', b'StrictHostKeyChecking=no', b'-o', b'Port=22', b'-o', b'User="host-user"', b'-o', b'ConnectTimeout=10', b'-o', b'ControlPath=~/.ansible/cp/02ec46349a', b'-O', b'check', b'X.X.X.X']
No connection to reset: OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolve_canonicalize: hostname X.X.X.X is address
debug1: auto-mux: Trying existing master
Control socket connect(~/.ansible/cp/02ec46349a): No such file or directory
reboot: attempting to get system boot time
<X.X.X.X> ESTABLISH SSH CONNECTION FOR USER: host-user
<X.X.X.X> SSH: EXEC sshpass -d12 ssh -vvv -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=22 -o 'User="host-user"' -o ConnectTimeout=10 -o ControlPath=~/.ansible/cp/02ec46349a -tt X.X.X.X '/bin/sh -c '"'"'sudo -H -S  -p "[sudo via ansible, key=bpysdtsdgvijqvsmtxxbnykpmxgrhqho] password:" -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-bpysdtsdgvijqvsmtxxbnykpmxgrhqho ; cat /proc/sys/kernel/random/boot_id'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
'''
        Takes a command array and scans it for ControlPersist and ControlPath
        settings and returns two booleans indicating whether either was found.
        This could be smarter, e.g. returning false if ControlPersist is 'no',
        but for now we do it simple way.
        '''
        controlpersist = False
        controlpath = False
        for b_arg in (a.lower() for a in b_command):
            if b'controlpersist' in b_arg:
                controlpersist = True
            elif b'controlpath' in b_arg:
                controlpath = True
        return controlpersist, controlpath
    def _add_args(self, b_command, b_args, explanation):
        """
        Adds arguments to the ssh command and displays a caller-supplied explanation of why.
        :arg b_command: A list containing the command to add the new arguments to.
            This list will be modified by this method.
        :arg b_args: An iterable of new arguments to add.  This iterable is used
            more than once so it must be persistent (ie: a list is okay but a
            StringIO would not)
        :arg explanation: A text string containing explaining why the arguments
            were added.  It will be displayed with a high enough verbosity.
        .. note:: This function does its work via side-effect.  The b_command list has the new arguments appended.
        """
        display.vvvvv(u'SSH: %s: (%s)' % (explanation, ')('.join(to_text(a) for a in b_args)), host=self.host)
        b_command += b_args
    def _build_command(self, binary, subsystem, *other_args):