Re: [mediacapture-screen-share] Conditional Focus (When Display-Capture Starts) (#190)

> > ```js
> > doSomething();  // Maybe ends the task, mabye doesn't.
> > ```
> 
> Synchronous functions don't end a task, because JS is run to completion. Did you mean `await doSomething()` ?

You've hit the nail on the head. `doSomething()` **is in fact** asynchronous, even if you don't `await` on it. It waits on a Promise. Sometimes it waits on an already-resolved Promise, sometimes it waits for 5s.

```js
async function doSomething() {
  await (makeDecision() ? alreadyResolvedPromise : slowPromise);
}
```

Now, it's exactly [POLA](https://en.wikipedia.org/wiki/Principle_of_least_astonishment) which I am citing here:

```js
const stream1 = await navigator.mediaDevices.getDisplayMedia();
doSomething();  // Maybe ends the task, mabye doesn't.
navigator.mediaDevices.focusPolicy = "no-focus";
```

This code produces flaky results, but **cannot raise exceptions**.
That's not simple.
That's a problem.


-- 
GitHub Notification of comment by eladalon1983
Please view or discuss this issue at https://github.com/w3c/mediacapture-screen-share/issues/190#issuecomment-929053124 using your GitHub account


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

Received on Tuesday, 28 September 2021 10:16:25 UTC