<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
In some cases of nesting `block`s/`import_tasks`' the `fail` module interrupts the Ansible execution and disregards `always` blocks.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
block import_tasks

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.15
  config file = <...hidden...>/ansible.cfg
  configured module search path = [u'/home/XXX/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /home/XXX/venv/lib/python2.7/site-packages/ansible
  executable location = /home/XXX/venv/bin/ansible
  python version = 2.7.18rc1 (default, Apr  7 2020, 12:05:55) [GCC 9.3.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
ANSIBLE_NOCOWS(<...hidden...>/ansible.cfg) = True
ANY_ERRORS_FATAL(<...hidden...>/ansible.cfg) = True
```

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
Create a following file structure:

File: play.yml
```yaml
- hosts: all
  gather_facts: no
  tasks:
  - block:
    - import_tasks: tasks.yml
    always:
      #- debug: msg="First"
      - block:
        - debug: msg="Second"
```
File: tasks.yml
```yaml
- fail: msg="Fail as expected"
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
First, failure message is printed.
Then, debug "Second" is printed.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
Failure message is printed.
Debug "second" is **not** printed.
<!--- Paste verbatim command output between quotes -->
```paste below
$ ansible-playbook -i localhost, -c local ../../play.yml 
PLAY [all] ********************************************************************************************************************************************************************************************************

TASK [fail] *******************************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Fail as expected"}

NO MORE HOSTS LEFT ************************************************************************************************************************************************************************************************

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

```
##### ADDITIONAL INFORMATION
It seems to appear only if `block` is a first element in `always` dictionary. For example in such case:
 File: play.yml
```yaml
- hosts: all
  gather_facts: no
  tasks:
  - block:
    - import_tasks: tasks.yml
    always:
      - debug: msg="First"
      - block:
        - debug: msg="Second"
```
File: tasks.yml
```yaml
- fail: msg="Fail as expected"
```
Everything works as expected and both outer debug and inner debug get's printed:
```
$ ansible-playbook -i localhost, -c local ../../play.yml 
PLAY [all] ********************************************************************************************************************************************************************************************************

TASK [fail] *******************************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Fail as expected"}

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

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

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

if not task:
                        continue
                    if self._tqm._terminated:
                        break
                    run_once = False
                    work_to_do = True
                    
                    
                    if not isinstance(task, Handler) and task._role:
                        role_obj = self._get_cached_role(task, iterator._play)
                        if role_obj.has_run(host) and role_obj._metadata.allow_duplicates is False:
                            display.debug("'%s' skipped because role has already run" % task)
                            continue
                    display.debug("getting variables")
                    task_vars = self._variable_manager.get_vars(play=iterator._play, host=host, task=task,
                                                                _hosts=self._hosts_cache, _hosts_all=self._hosts_cache_all)
                    self.add_tqm_variables(task_vars, play=iterator._play)
                    templar = Templar(loader=self._loader, variables=task_vars)
                    display.debug("done getting variables")
                    
                    
                    
                    task_action = templar.template(task.action)
                    try:
                        action = action_loader.get(task_action, class_only=True, collection_list=task.collections)
                    except KeyError:
                        
                        
                        action = None
                    if task_action in C._ACTION_META: