### Summary

I have a strange behavior of `rescued` stat after run. I expected it to be equal 1 since there was a rescue block execution but instead it has value of 0. 
This is caused by block-with-always role inside block with rescue.

Is this expected behavior? How can I make sure if rescue block was actually executed in this scenario, if I'm only able to get an error?

### Issue Type

Bug Report

### Component Name

block

### Ansible Version

```console
ansible [core 2.13.0]
```


### Configuration

```console
All defaults
```


### OS / Environment

Arch Linux.

### Steps to Reproduce

Here's my main playbook:
```
---
- name: Ansible Blocks
  hosts: localhost
  gather_facts: false

  tasks:
    - name: kek
      block:
        - name: Run Main Role
          import_role:
            name: mainerrrole

      rescue:
        - name: Rescue block (perform recovery)
          debug:
            msg: "Something went wrong, cleaning up.."
```

Here's the `mainerrrole` code
```
- name: Deploy
  block:
    - name: ERR ROLE Failing intentionally by role
      command: "ls -l /tmp/does-not-exist"

  always:
    - name: Cleanup
      import_role:
        name: okrole
```

Here's the `okrole` code
```
- name: OK ROLE List home directory content
  command: "ls -l ~/"
```

### Expected Results

Expected run stats to contain rescued=1 since there was a rescue block execution in logs.

### Actual Results

```console
ansible-playbook play.yml 
[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'
 _______________________ 
< PLAY [Ansible Blocks] >
 ----------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

 _____________________________________________________________ 
< TASK [mainerrrole : ERR ROLE Failing intentionally by role] >
 ------------------------------------------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

fatal: [localhost]: FAILED! => {"changed": true, "cmd": ["ls", "-l", "/tmp/does-not-exist"], "delta": "0:00:00.005622", "end": "2022-06-13 14:44:50.711257", "msg": "non-zero return code", "rc": 2, "start": "2022-06-13 14:44:50.705635", "stderr": "ls: cannot access '/tmp/does-not-exist': No such file or directory", "stderr_lines": ["ls: cannot access '/tmp/does-not-exist': No such file or directory"], "stdout": "", "stdout_lines": []}
 _____________________________________________________ 
< TASK [okrole : OK ROLE List home directory content] >
 ----------------------------------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

changed: [localhost]
 ________________________________________ 
< TASK [Rescue block (perform recovery)] >
 ---------------------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

ok: [localhost] => {
    "msg": "Something went wrong, cleaning up.."
}
 ____________ 
< PLAY RECAP >
 ------------ 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

localhost                  : ok=2    changed=1    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
if state.rescue_child_state:
                    (state.rescue_child_state, task) = self._get_next_task_from_state(state.rescue_child_state, host=host)
                    if self._check_failed_state(state.rescue_child_state):
                        state.rescue_child_state = None
                        self._set_failed_state(state)
                    else:
                        if task is None or state.rescue_child_state.run_state == IteratingStates.COMPLETE:
                            state.rescue_child_state = None
                            continue
                else:
                    if state.fail_state & FailedStates.RESCUE == FailedStates.RESCUE:
                        state.run_state = IteratingStates.ALWAYS
                    elif state.cur_rescue_task >= len(block.rescue):
                        if len(block.rescue) > 0:
                            state.fail_state = FailedStates.NONE
                        state.run_state = IteratingStates.ALWAYS
                        state.did_rescue = True
                    else:
                        task = block.rescue[state.cur_rescue_task]
                        if isinstance(task, Block):
                            state.rescue_child_state = HostState(blocks=[task])
                            state.rescue_child_state.run_state = IteratingStates.TASKS
                            task = None
                        state.cur_rescue_task += 1
            elif state.run_state == IteratingStates.ALWAYS: