### Summary

The ansible-core 2.15 ignores handlers notified by another handlers when are more than one  case.

With the ansible-core 2.14, all cases of handlers notified by another handlers are runned.

### Issue Type

Bug Report

### Component Name

notify

### Ansible Version

```console
ansible [core 2.15.0]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.11/site-packages/ansible
  ansible collection location = /home/user/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.11.3 (main, Apr  5 2023, 15:52:25) [GCC 12.2.1 20230201] (/usr/bin/python)
  jinja version = 3.1.2
  libyaml = True
```


### Configuration

```console
CONFIG_FILE() = /etc/ansible/ansible.cfg
EDITOR(env: EDITOR) = vim
PAGER(env: PAGER) = less
```


### OS / Environment

Archlinux

ansible 7.6.0-1
ansible-core 2.15.0-1
ansible-lint 6.15.0.r45.g2fca3fe-2
python-ansible-compat 4.0.2-1

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
---
- name: Testing
  hosts: localhost
  tasks:
    - name: Trigger handlers
      debug:
        msg: Task 1
      changed_when: true
      notify: Handler 1
  handlers:
    - name: Handler 1
      debug:
        msg: Handler 1
      changed_when: true
      notify: Handler 2
    - name: Handler 2
      debug:
        msg: Handler 2
      changed_when: true
      notify: Handler 3
    - name: Handler 3
      debug:
        msg: Handler 3
```


### Expected Results

All handlers must be notified.

```console
PLAY [Testing] ********************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************
ok: [localhost]

TASK [Trigger handlers] ********************************************************************************************************
changed: [localhost] => {
    "msg": "Task 1"
}

RUNNING HANDLER [Handler 1] ********************************************************************************************************
changed: [localhost] => {
    "msg": "Handler 1"
}

RUNNING HANDLER [Handler 2] ********************************************************************************************************
changed: [localhost] => {
    "msg": "Handler 2"
}

RUNNING HANDLER [Handler 3] ********************************************************************************************************
changed: [localhost] => {
    "msg": "Handler 3"
}

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

### Actual Results

Only the two first handlers were notified.

```console
PLAY [Testing] *************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************
ok: [localhost]

TASK [Trigger handlers] *************************************************************************************************
changed: [localhost] => {
    "msg": "Task 1"
}

RUNNING HANDLER [Handler 1] *************************************************************************************************
changed: [localhost] => {
    "msg": "Handler 1"
}

RUNNING HANDLER [Handler 2] *************************************************************************************************
changed: [localhost] => {
    "msg": "Handler 2"
}

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


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
all_vars = self._variable_manager.get_vars(play=iterator._play, host=h, task=task,
                                                       _hosts=self._hosts_cache, _hosts_all=self._hosts_cache_all)
            templar = Templar(loader=self._loader, variables=all_vars)
            return task.evaluate_conditional(templar, all_vars)
        skipped = False
        msg = meta_action
        skip_reason = '%s conditional evaluated to False' % meta_action
        if isinstance(task, Handler):
            self._tqm.send_callback('v2_playbook_on_handler_task_start', task)
        else:
            self._tqm.send_callback('v2_playbook_on_task_start', task, is_conditional=False)
        
        if meta_action in ('noop', 'refresh_inventory', 'reset_connection') and task.when:
            self._cond_not_supported_warn(meta_action)
        if meta_action == 'noop':
            msg = "noop"
        elif meta_action == 'flush_handlers':
            if _evaluate_conditional(target_host):
                host_state = iterator.get_state_for_host(target_host.name)
                
                for notification in list(host_state.handler_notifications):
                    for handler in self.search_handlers_by_notification(notification, iterator):
                        if handler.notify_host(target_host):
                            
                            
                            self._tqm.send_callback('v2_playbook_on_notify', handler, target_host)
                    iterator.clear_notification(target_host.name, notification)
                if host_state.run_state == IteratingStates.HANDLERS:
                    raise AnsibleError('flush_handlers cannot be used as a handler')
                if target_host.name not in self._tqm._unreachable_hosts: