Re: [webrtc-pc] Can onicecandidate fire before SLD.then(code)? (#2574)

Both _"queue a task"_ statements above queue tasks on the _main_ event loop.

Crucially, the main event loop's _microtask_ queue is [emptied](https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model:perform-a-microtask-checkpoint) at the end of **_each_** main task.


Let's say both _"queue a task"_ you mention happen. The main event loop now contains [T1,  T2].

1. We execute T1 (SLD success):
    1. The _"Resolve p with undefined"_ [queues a microtask](https://html.spec.whatwg.org/multipage/webappapis.html#queue-a-microtask) on the main event loop's microtask: [M1].
    2. We run off the end of JS, where we **_empty the microtask queue_**. This executes M1:
        1. This runs `foo` in the `then`
2. We execute T2 (surface ICE candidate).

Check out [In the Loop](https://www.youtube.com/watch?v=cCOL7MC4Pl0&feature=youtu.be&t=1594) explaining how microtask queues blocks rendering.


-- 
GitHub Notification of comment by jan-ivar
Please view or discuss this issue at https://github.com/w3c/webrtc-pc/issues/2574#issuecomment-696761286 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Tuesday, 22 September 2020 14:32:38 UTC