### Summary

When include_role is the last task in an "always" block after a failure, the role does not get executed. When an additional task is after the include_role, both the role and the last task get executed.

I found that this only happens with the free strategy and not the linear strategy.

### Issue Type

Bug Report

### Component Name

ansible/plugins/strategy/free.py

### Ansible Version

```console
$ ansible --version
ansible [core 2.11.0]
  config file = /home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg
  configured module search path = ['/home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/modules', '/usr/share/ansible/collections/ansible_collections/tfdm/utils/plugins/modules', '/home/users/gbg/*****/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/site-packages/ansible
  ansible collection location = /home/users/gbg/*****/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.8.3 (default, Aug 18 2020, 08:56:04) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
  jinja version = 3.0.0
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed
ANSIBLE_PIPELINING(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = True
BECOME_ALLOW_SAME_USER(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = True
BECOME_PLUGIN_PATH(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ['/home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/become', '/usr/share/ansible/collections/ansible_collections/tfdm/utils/plugins/becom>
CALLBACKS_ENABLED(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ['tfdm.utils.tfdm_log', 'tfdm.utils.profile_tasks_custom']
DEFAULT_ACTION_PLUGIN_PATH(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ['/home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/action', '/usr/share/ansible/collections/ansible_collections/tfdm/utils/plugi>
DEFAULT_FILTER_PLUGIN_PATH(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ['/home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/filter', '/usr/share/ansible/collections/ansible_collections/tfdm/utils/plugi>
DEFAULT_FORKS(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = 100
DEFAULT_HOST_LIST(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ['/home/users/gbg/*****/git/config/ile/playbooks/inventory.yml']
DEFAULT_LOAD_CALLBACK_PLUGINS(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = True
DEFAULT_LOCAL_TMP(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = /tmp/.ansible_*****/ansible-local-1796160cr3o3nna
DEFAULT_MODULE_PATH(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ['/home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/modules', '/usr/share/ansible/collections/ansible_collections/tfdm/utils/plugins/mod>
DEFAULT_ROLES_PATH(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ['/home/users/gbg/*****/git/config/ile/playbooks/roles', '/usr/share/ansible/tfdm_roles', '/home/users/gbg/*****/.ansible/roles', '/usr/share/ansible/roles', '/etc/ansible/roles']
DEFAULT_STDOUT_CALLBACK(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = tfdm.utils.yaml_custom
DEFAULT_STRATEGY(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = free
DEFAULT_TEST_PLUGIN_PATH(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ['/home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/test', '/usr/share/ansible/collections/ansible_collections/tfdm/utils/plugins/t>
DEFAULT_VAULT_PASSWORD_FILE(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = /home/users/gbg/*****/git/config/ile/playbooks/tfdm_key
DIFF_ALWAYS(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = True
DIFF_CONTEXT(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = 0
DISPLAY_SKIPPED_HOSTS(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = False
DUPLICATE_YAML_DICT_KEY(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ignore
HOST_KEY_CHECKING(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = False
INTERPRETER_PYTHON(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = auto_silent
INVENTORY_CACHE_ENABLED(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = True
INVENTORY_ENABLED(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ['tfdm.utils.tfdm_inventory', 'host_list', 'script', 'auto', 'yaml', 'ini']
LOCALHOST_WARNING(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = False
MAX_FILE_SIZE_FOR_DIFF(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = 10485760
VARIABLE_PLUGINS_ENABLED(/home/users/gbg/*****/git/config/ile/playbooks/ansible.cfg) = ['host_group_vars', 'tfdm.utils.tfdm_site_vars']
```


### OS / Environment

RHEL8.2

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
test.yml
---
- hosts: localhost
  gather_facts: False
  tasks:

    - block:
        - fail:
            msg: "Intentional failure"
      always:
        - debug:
            msg: "In the always block"

        - include_role:
            name: test_role

            #- debug:
            #msg: "After calling the role in the always block"
```

```
roles/test_role/tasks/main.yml
---

- debug:
    msg: "INSIDE THE ROLE"
```


### Expected Results

```
PLAY [localhost] ***************************************************************************************************************************************************************************************
Friday 03 September 2021  18:14:34 +0000 (0:00:00.147)       0:00:00.147 ******

TASK [fail] ********************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => changed=false
  msg: Intentional failure
Friday 03 September 2021  18:14:34 +0000 (0:00:00.026)       0:00:00.173 ******

TASK [debug] *******************************************************************************************************************************************************************************************
ok: [localhost] =>
  msg: In the always block
Friday 03 September 2021  18:14:34 +0000 (0:00:00.023)       0:00:00.197 ******

TASK [include_role : test_role] ************************************************************************************************************************************************************************
Friday 03 September 2021  18:14:34 +0000 (0:00:00.034)       0:00:00.232 ******

TASK [test_role : debug] *******************************************************************************************************************************************************************************
ok: [localhost] =>
  msg: INSIDE THE ROLE
Friday 03 September 2021  18:14:34 +0000 (0:00:00.032)       0:00:00.264 ******

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

### Actual Results

```console
PLAY [localhost] **************************************************************************************************************************************************************************************************************************************************************
Friday 03 September 2021  18:25:11 +0000 (0:00:00.144)       0:00:00.144 ******

TASK [fail] *******************************************************************************************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => changed=false
  msg: Intentional failure
Friday 03 September 2021  18:25:11 +0000 (0:00:00.026)       0:00:00.171 ******

TASK [debug] ******************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] =>
  msg: In the always block
Friday 03 September 2021  18:25:11 +0000 (0:00:00.024)       0:00:00.195 ******

TASK [include_role : test_role] ***********************************************************************************************************************************************************************************************************************************************

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

The last two tasks with ANSIBLE_DEBUG enabled:
```
TASK [debug] *******************************************************************
task path: /home/users/gbg/*****/git/config/ile/playbooks/test.yml:10
ok: [localhost] =>
  msg: In the always block
1796974 1630693258.82070: next free host: localhost
1796974 1630693258.82079: getting the next task for host localhost
1796974 1630693258.82087: done getting next task for host localhost
1796974 1630693258.82093:  ^ task is: TASK: include_role : test_role
1796974 1630693258.82098:  ^ state is: HOST STATE: block=2, task=1, rescue=0, always=2, run_state=ITERATING_ALWAYS, fail_state=FAILED_TASKS, pending_setup=False, tasks child state? (None), rescue child state? (None), always child state? (None), did rescue? False, did start at task? False
1796974 1630693258.82104 [localhost]: free host state: HOST STATE: block=2, task=1, rescue=0, always=2, run_state=ITERATING_ALWAYS, fail_state=FAILED_TASKS, pending_setup=False, tasks child state? (None), rescue child state? (None), always child state? (None), did rescue? False, did start at task? False
1796974 1630693258.82110 [localhost]: free host task: TASK: include_role : test_role
1796974 1630693258.82115 [localhost]: this host has work to do
1796974 1630693258.82119 [localhost]: getting variables
1796974 1630693258.82125: in VariableManager get_vars()
1796974 1630693258.82162: Calling all_inventory to load vars for localhost
1796974 1630693258.82173: Calling groups_inventory to load vars for localhost
1796974 1630693258.82186: Calling all_plugins_inventory to load vars for localhost
1796974 1630693258.82228: Loading VarsModule 'host_group_vars' from /usr/local/lib/python3.8/site-packages/ansible/plugins/vars/host_group_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.82266: Loading VarsModule 'ansible_collections.tfdm.utils.plugins.vars.tfdm_site_vars' from /home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/vars/tfdm_site_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.82314: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/dev_sites.yml
1796974 1630693258.82327: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/lab_to_rack_size_mapping.yml
1796974 1630693258.82341: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_adapter_networks.yml
1796974 1630693258.82351: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_facts.yml
1796974 1630693258.82363: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_facts_dev.yml
1796974 1630693258.82374: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_host_ids.yml
1796974 1630693258.82386: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_ipa_settings.yml
1796974 1630693258.82397: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_user_group_ids.yml
1796974 1630693258.82408: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/vars.yml
1796974 1630693258.82417: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/vault.yml
1796974 1630693258.82425: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/vm_instances.yml
1796974 1630693258.82433: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/vmware_module_defaults.yml
1796974 1630693258.82450: Loading data from /backups/vault/group_vars/all/vault.yml
1796974 1630693258.82460: Calling all_plugins_play to load vars for localhost
1796974 1630693258.82486: Loading VarsModule 'host_group_vars' from /usr/local/lib/python3.8/site-packages/ansible/plugins/vars/host_group_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.82507: Loading VarsModule 'ansible_collections.tfdm.utils.plugins.vars.tfdm_site_vars' from /home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/vars/tfdm_site_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.82539: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/dev_sites.yml
1796974 1630693258.82549: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/lab_to_rack_size_mapping.yml
1796974 1630693258.82558: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_adapter_networks.yml
1796974 1630693258.82566: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_facts.yml
1796974 1630693258.82574: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_facts_dev.yml
1796974 1630693258.82583: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_host_ids.yml
1796974 1630693258.82592: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_ipa_settings.yml
1796974 1630693258.82599: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/tfdm_user_group_ids.yml
1796974 1630693258.82606: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/vars.yml
1796974 1630693258.82613: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/vault.yml
1796974 1630693258.82620: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/vm_instances.yml
1796974 1630693258.82627: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/all/vmware_module_defaults.yml
1796974 1630693258.82642: Loading data from /backups/vault/group_vars/all/vault.yml
1796974 1630693258.82652: Calling groups_plugins_inventory to load vars for localhost
1796974 1630693258.82678: Loading VarsModule 'host_group_vars' from /usr/local/lib/python3.8/site-packages/ansible/plugins/vars/host_group_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.82701: Loading VarsModule 'ansible_collections.tfdm.utils.plugins.vars.tfdm_site_vars' from /home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/vars/tfdm_site_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.82803: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/rhel/vars.yml
1796974 1630693258.82814: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/rhel/vault.yml
1796974 1630693258.82872: Loading data from /backups/vault/group_vars/rhel/vault.yml
1796974 1630693258.82891: Calling groups_plugins_play to load vars for localhost
1796974 1630693258.82916: Loading VarsModule 'host_group_vars' from /usr/local/lib/python3.8/site-packages/ansible/plugins/vars/host_group_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.82938: Loading VarsModule 'ansible_collections.tfdm.utils.plugins.vars.tfdm_site_vars' from /home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/vars/tfdm_site_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.83036: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/rhel/vars.yml
1796974 1630693258.83048: Loading data from /home/users/gbg/*****/git/config/ile/playbooks/group_vars/rhel/vault.yml
1796974 1630693258.83104: Loading data from /backups/vault/group_vars/rhel/vault.yml
1796974 1630693258.83149: Loading VarsModule 'host_group_vars' from /usr/local/lib/python3.8/site-packages/ansible/plugins/vars/host_group_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.83172: Loading VarsModule 'ansible_collections.tfdm.utils.plugins.vars.tfdm_site_vars' from /home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/vars/tfdm_site_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.83230: Loading VarsModule 'host_group_vars' from /usr/local/lib/python3.8/site-packages/ansible/plugins/vars/host_group_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.83253: Loading VarsModule 'ansible_collections.tfdm.utils.plugins.vars.tfdm_site_vars' from /home/users/gbg/*****/git/config/ile/playbooks/collections/ansible_collections/tfdm/utils/plugins/vars/tfdm_site_vars.py (found_in_cache=True, class_only=False)
1796974 1630693258.83339: done with get_vars()
1796974 1630693258.83358 [localhost]: done getting variables
1796974 1630693258.83369: getting the next task for host localhost
1796974 1630693258.83376: done getting next task for host localhost
1796974 1630693258.83384:  ^ task is: TASK: include_role : test_role
1796974 1630693258.83389:  ^ state is: HOST STATE: block=2, task=1, rescue=0, always=2, run_state=ITERATING_ALWAYS, fail_state=FAILED_TASKS, pending_setup=False, tasks child state? (None), rescue child state? (None), always child state? (None), did rescue? False, did start at task? False
1796974 1630693258.83417 [localhost]: done templating
Friday 03 September 2021  18:20:58 +0000 (0:00:00.035)       0:00:04.711 ******
1796974 1630693258.83447: entering _queue_task() for localhost/include_role
1796974 1630693258.83454: Creating lock for include_role
1796974 1630693258.83757: worker is 1 (out of 1 available)
1796974 1630693258.83830: exiting _queue_task() for localhost/include_role
1796994 1630693258.83931: running TaskExecutor() for localhost/TASK: include_role : test_role
1796994 1630693258.84035: in run() - task 00505600-0571-bb4d-838a-00000000025f
1796974 1630693258.84040: next free host: localhost
1796974 1630693258.84052: getting the next task for host localhost
1796994 1630693258.84060: variable 'ansible_search_path' from source: unknown
1796974 1630693258.84066: done getting next task for host localhost
1796974 1630693258.84071:  ^ task is: None
1796974 1630693258.84079:  ^ state is: HOST STATE: block=2, task=1, rescue=0, always=2, run_state=ITERATING_COMPLETE, fail_state=FAILED_TASKS, pending_setup=False, tasks child state? (None), rescue child state? (None), always child state? (None), did rescue? False, did start at task? False
1796974 1630693258.84088 [localhost]: free host state: HOST STATE: block=2, task=1, rescue=0, always=2, run_state=ITERATING_COMPLETE, fail_state=FAILED_TASKS, pending_setup=False, tasks child state? (None), rescue child state? (None), always child state? (None), did rescue? False, did start at task? False
1796974 1630693258.84093 [localhost]: free host task: None
1796994 1630693258.84100: calling self._execute()
1796994 1630693258.84162: variable 'ansible_connection' from source: host vars for 'localhost'
1796994 1630693258.84174: variable 'ansible_become' from source: group vars, precedence entry 'groups_plugins_play'
1796994 1630693258.84188: variable 'omit' from source: magic vars
1796974 1630693258.84213: waiting for pending results...
1796994 1630693258.84299: _execute() done
1796994 1630693258.84310: dumping result to json
1796994 1630693258.84317: done dumping result, returning
1796994 1630693258.84325: done running TaskExecutor() for localhost/TASK: include_role : test_role [00505600-0571-bb4d-838a-00000000025f]
1796994 1630693258.84343: sending task result for task 00505600-0571-bb4d-838a-00000000025f
1796994 1630693258.84396: done sending task result for task 00505600-0571-bb4d-838a-00000000025f
1796994 1630693258.84440: WORKER PROCESS EXITING

TASK [include_role : test_role] ************************************************
task path: /home/users/gbg/*****/git/config/ile/playbooks/test.yml:13
1796974 1630693258.84583: no more pending results, returning what we have
1796974 1630693258.84592: getting the next task for host localhost
1796974 1630693258.84599: done getting next task for host localhost
1796974 1630693258.84604:  ^ task is: None
1796974 1630693258.84609:  ^ state is: HOST STATE: block=2, task=1, rescue=0, always=2, run_state=ITERATING_COMPLETE, fail_state=FAILED_TASKS, pending_setup=False, tasks child state? (None), rescue child state? (None), always child state? (None), did rescue? False, did start at task? False
1796974 1630693258.84616: running handlers

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

1796974 1630693258.84748: RUNNING CLEANUP
```
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
same_tasks = 0
                            for worker in self._workers:
                                if worker and worker.is_alive() and worker._task._uuid == task._uuid:
                                    same_tasks += 1
                            display.debug("task: %s, same_tasks: %d" % (task.get_name(), same_tasks))
                            if same_tasks >= throttle:
                                break
                        
                        self._blocked_hosts[host_name] = True
                        (state, task) = iterator.get_next_task_for_host(host)
                        try:
                            action = action_loader.get(task.action, class_only=True, collection_list=task.collections)
                        except KeyError:
                            
                            
                            action = None
                        try:
                            task.name = to_text(templar.template(task.name, fail_on_undefined=False), nonstring='empty')
                            display.debug("done templating", host=host_name)
                        except Exception:
                            
                            
                            display.debug("templating failed for some reason", host=host_name)
                        run_once = templar.template(task.run_once) or action and getattr(action, 'BYPASS_HOST_LOOP', False)
                        if run_once:
                            if action and getattr(action, 'BYPASS_HOST_LOOP', False):
                                raise AnsibleError("The '%s' module bypasses the host loop, which is currently not supported in the free strategy "
                                                   "and would instead execute for every host in the inventory list." % task.action, obj=task._ds)
                            else:
                                display.warning("Using run_once with the free strategy is not currently supported. This task will still be "