### Summary

When using `ignore_errors`, following things happen (which i'd expect):

1. Task output shows `...ignoring`
2. `ok` and `ignored` counters are increased

But using `ignore_unreachable` yields in a completely different result:

1. Task output **does not** show  `...ignoring`
2. `unreachable` and `skipped` counters are increased instead

I would expect `ignore_unreachable` to behave just like `ignore_errors`.

---

There is a similiar issue https://github.com/ansible/ansible/issues/76895, which was closed by @mkrizek [comment](https://github.com/ansible/ansible/issues/76895#issuecomment-1026986479) stating that `ignore_errors` does not affect `failed` counter.

However, my testing reveals that's not the case (at least with recent versions)

### Issue Type

Bug Report

### Component Name

stats

### Ansible Version

```console
$ ansible --version
ansible [core 2.12.5]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/kristian/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/kristian/playground/ansible-ingore-unreachable-stats/venv/lib/python3.8/site-packages/ansible
  ansible collection location = /home/kristian/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/kristian/playground/ansible-ingore-unreachable-stats/venv/bin/ansible
  python version = 3.8.12 (default, Dec 27 2021, 16:48:07) [GCC 11.1.0]
  jinja version = 3.1.2
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed
No custom config, all defaults
```


### OS / Environment

- Arch Linux (kernel version 5.17.4-arch1-1)
- Python 3.10.4
- ansible-core installed via pip (inside fresh venv)

### Steps to Reproduce

Quick and dirty "one-liner":

```shell
ansible-playbook <(cat <<PLAYBOOK
  - hosts: localhost
    gather_facts: false
    become: false
    vars:
      # Simulate unreachable host using invalid configuration
      ansible_connection: ssh
      ansible_ssh_user: "non-existent-user"
    tasks:

      - name: failed task
        fail: msg=failure
        ignore_errors: true

      - name: unreachable task
        action: ping
        ignore_unreachable: true
PLAYBOOK
)
```

### Expected Results

I'd expect to `ignore_unreachable` behave just like `ignore_errors` does:

```diff
TASK [failed task] *********************************************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "failure"}
...ignoring

TASK [unreachable task] ****************************************************************************************************************************************************************************************************************
fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '127.0.0.1' (ED25519) to the list of known hosts.\r\nnon-existent-user@127.0.0.1: Permission denied (publickey,password).", "skip_reason": "Host localhost is unreachable", "unreachable": true}
+...ignoring

PLAY RECAP *****************************************************************************************************************************************************************************************************************************
-localhost                  : ok=1    changed=0    unreachable=1    failed=0    skipped=1    rescued=0    ignored=1   
+localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=2   
```

### Actual Results

```console
ansible-playbook [core 2.12.5]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/kristian/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/kristian/playground/ansible-ingore-unreachable-stats/venv/lib/python3.8/site-packages/ansible
  ansible collection location = /home/kristian/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/kristian/playground/ansible-ingore-unreachable-stats/venv/bin/ansible-playbook
  python version = 3.8.12 (default, Dec 27 2021, 16:48:07) [GCC 11.1.0]
  jinja version = 3.1.2
  libyaml = True
Using /etc/ansible/ansible.cfg as config file
host_list declined parsing /etc/ansible/hosts as it did not pass its verify_file() method
Skipping due to inventory source not existing or not being readable by the current user
script declined parsing /etc/ansible/hosts as it did not pass its verify_file() method
auto declined parsing /etc/ansible/hosts as it did not pass its verify_file() method
Skipping due to inventory source not existing or not being readable by the current user
yaml declined parsing /etc/ansible/hosts as it did not pass its verify_file() method
Skipping due to inventory source not existing or not being readable by the current user
ini declined parsing /etc/ansible/hosts as it did not pass its verify_file() method
Skipping due to inventory source not existing or not being readable by the current user
toml declined parsing /etc/ansible/hosts as it did not pass its verify_file() method
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: 13 *********************************************************************************************************************************************************************************************************************************
1 plays in /proc/self/fd/13

PLAY [localhost] *****************************************************************************************************************************************************************************************************************************
META: ran handlers

TASK [failed task] ***************************************************************************************************************************************************************************************************************************
task path: /proc/self/fd/13:9
fatal: [localhost]: FAILED! => {
    "changed": false,
    "msg": "failure"
}
...ignoring

TASK [unreachable task] **********************************************************************************************************************************************************************************************************************
task path: /proc/self/fd/13:13
<127.0.0.1> ESTABLISH SSH CONNECTION FOR USER: non-existent-user
<127.0.0.1> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="non-existent-user"' -o ConnectTimeout=10 -o 'ControlPath="/home/kristian/.ansible/cp/58aadfbad3"' 127.0.0.1 '/bin/sh -c '"'"'echo ~non-existent-user && sleep 0'"'"''
<127.0.0.1> (255, b'', b"Warning: Permanently added '127.0.0.1' (ED25519) to the list of known hosts.\r\nnon-existent-user@127.0.0.1: Permission denied (publickey,password).\r\n")
fatal: [localhost]: UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: Warning: Permanently added '127.0.0.1' (ED25519) to the list of known hosts.\r\nnon-existent-user@127.0.0.1: Permission denied (publickey,password).",
    "skip_reason": "Host localhost is unreachable",
    "unreachable": true
}
META: ran handlers
META: ran handlers

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


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
play_context = play_context.set_task_and_variable_override(task=task, variables=all_vars, templar=templar)
            
            
            play_context.post_validate(templar=templar)
            
            
            if not play_context.remote_addr:
                play_context.remote_addr = target_host.address
            
            
            
            play_context.update_vars(all_vars)
            if target_host in self._active_connections:
                connection = Connection(self._active_connections[target_host])
                del self._active_connections[target_host]
            else:
                connection = plugin_loader.connection_loader.get(play_context.connection, play_context, os.devnull)
                connection.set_options(task_keys=task.dump_attrs(), var_options=all_vars)
                play_context.set_attributes_from_plugin(connection)
            if connection:
                try:
                    connection.reset()
                    msg = 'reset connection'
                except ConnectionError as e:
                    
                    display.debug("got an error while closing persistent connection: %s" % e)
            else:
                msg = 'no connection, nothing to reset'
        else:
            raise AnsibleError("invalid meta action requested: %s" % meta_action, obj=task._ds)