##### SUMMARY
Depending on the error that occurs when a block with rescue catches it, the play execution stops, and the playbook ends successfuly, but the next plays don't run. I was able to simulate it using `include_tasks`, but the task inside use a module with a wrong name (that can be provided by a user, so not something that I have control, because it might not be me running the play, the user may include and run custom tasks).

This is not a problem if the module with wrong name is in the main playbook file, because the playbook fails at compilation time, but when lazily loaded through an `include_tasks`, the task fails, the `rescue` (wrapping the `include_tasks`) catches the error successfully, but the next plays don't run, and the playbook ends successfuly.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
block

##### ANSIBLE VERSION
```paste below
ansible 2.10.5
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.9 (default, Oct  8 2020, 12:12:24) [GCC 8.4.0]
```

##### CONFIGURATION
```paste below

```
(`ansible-config dump --only-changed` outputs nothing)

##### OS / ENVIRONMENT
Ubuntu 18.04 (docker container)

##### STEPS TO REPRODUCE

_hosts.yml:_
```yaml
[main]
localhost ansible_connection=local
```

_playbook.yml:_
```yaml
- name: Test 01
  hosts: main
  tasks:
    - block:
        - include_tasks: "test.yml"
      rescue:
        - debug:
            msg: "rescued"

    - debug:
        msg: "test 01"

- name: Test 02
  hosts: main
  tasks:
    - debug:
        msg: "test 02"

    - fail:
        msg: "end here"
```

**Works:**

_test.yml (gives an error, but works as expected):_
```yaml
- ansible.builtin.file:
    param: "value"
```

_Outputs:_
```ini
PLAY [Test 01] ************************************************************************************************************************

TASK [include_tasks] ******************************************************************************************************************
included: /main/dev/repos/cloud/test.yml for localhost

TASK [ansible.builtin.file] ***********************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (ansible.builtin.file) module: param Supported parameters include: _diff_peek, _original_basename, access_time, access_time_format, attributes, follow, force, group, mode, modification_time, modification_time_format, owner, path, recurse, selevel, serole, setype, seuser, src, state, unsafe_writes"}

TASK [debug] **************************************************************************************************************************
ok: [localhost] => {
    "msg": "rescued"
}

TASK [debug] **************************************************************************************************************************
ok: [localhost] => {
    "msg": "test 01"
}

PLAY [Test 02] ************************************************************************************************************************

TASK [debug] **************************************************************************************************************************
ok: [localhost] => {
    "msg": "test 02"
}

TASK [fail] ***************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "end here"}

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

**Bug:**

_test.yml (gives an error, stops the next plays, ends the playbook successfully, as explained above):_
```yaml
- wrong.collection.module:
    param: "value"
```

_Outputs:_
```ini
PLAY [Test 01] ************************************************************************************************************************

TASK [include_tasks] ******************************************************************************************************************
fatal: [localhost]: FAILED! => {"reason": "couldn't resolve module/action 'wrong.collection.module'. This often indicates a misspelling, missing collection, or incorrect module path.\n\nThe error appears to be in '/main/dev/repos/cloud/test.yml': line 1, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- wrong.collection.module:\n  ^ here\n"}

TASK [debug] **************************************************************************************************************************
ok: [localhost] => {
    "msg": "rescued"
}

TASK [debug] **************************************************************************************************************************
ok: [localhost] => {
    "msg": "test 01"
}

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

##### EXPECTED RESULTS
The same as in the case that works.

##### ACTUAL RESULTS
Stop the next plays, even after being rescued, and end the playbook successfully (if I run `ansible-playbook playbook.yml && echo "success" || echo "error"` it gives an error (due to the `fail` task at the end) in the 1st case (that works), but success in the 2nd, and don't run the 2nd play).

if host_tasks_to_run:
            try:
                lowest_cur_block = min(
                    (iterator.get_active_state(s).cur_block for h, (s, t) in host_tasks_to_run
                     if s.run_state != IteratingStates.COMPLETE))
            except ValueError:
                lowest_cur_block = None
        else:
            
            
            lowest_cur_block = None
        for (k, v) in host_tasks_to_run:
            (s, t) = v
            s = iterator.get_active_state(s)
            if s.cur_block > lowest_cur_block:
                
                continue
            if s.run_state == IteratingStates.SETUP:
                num_setups += 1
            elif s.run_state == IteratingStates.TASKS:
                num_tasks += 1
            elif s.run_state == IteratingStates.RESCUE:
                num_rescue += 1
            elif s.run_state == IteratingStates.ALWAYS:
                num_always += 1
        display.debug("done counting tasks in each state of execution:\n\tnum_setups: %s\n\tnum_tasks: %s\n\tnum_rescue: %s\n\tnum_always: %s" % (num_setups,
                                                                                                                                                  num_tasks,
                                                                                                                                                  num_rescue,
                                                                                                                                                  num_always))
        def _advance_selected_hosts(hosts, cur_block, cur_state):