Skip to content

Unpredictable async components behaviour #7107

@shine-on

Description

@shine-on

Version

2.5.8

Reproduction link

https://codepen.io/anon/pen/VrXxGY

Steps to reproduce

Please run codepen provided.

Check out console for output: listener3, listener2, listener1 got resolved and talker got notifed back on their resolution

  • listener3 uses setTimeout callback resolver
  • listener2 uses $bus.$on callback resolver
  • listener1 uses $bus.$on callback resolver wrapped by a Promise

Case 1. Among listeners, have only listener2 (comment out listener3 and listener1)

Case 2. Among listeners, have listener3 and listener2 (comment out listener1)

What is expected?

Case 1. Talker should be notified back on listener2 resolution

Case 2. Talker should be notified back on listener2 resolution independently from (asynchronously to) listener3 resolution.

What is actually happening?

Case 1. Talker has never notified back on listener2 resolution

Case 2. Talker has notified back on listener2 resolution simultaneously (synchronously) to listener3 resolution (i.e. listener2 resolution is delayed until listener 3 timed out)


"Normal" combinations are:

  • listener1 and listener3: listener1 resolves asynchronously to listener3
  • listener1 and listener2: both resolves (which is kinda surprising since listener2 alone never resolves, see Case 1 above)
  • listener3, listener2 and listener1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions