### 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
#
#
#
#
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import cmd
import functools
import os
import pprint
import sys
import threading
import time
import traceback
from collections import deque
from multiprocessing import Lock
from queue import Queue
from jinja2.exceptions import UndefinedError
from ansible import constants as C
from ansible import context
from ansible.errors import AnsibleError, AnsibleFileNotFound, AnsibleUndefinedVariable, AnsibleParserError