13:53
<Rob Palmer>

Is it essential that the user of the disposable resource gets to decide whether or not the dispose should be asyncly waited on?

As opposed to the resource itself deciding that, via the way it sets up the disposable symbol/prototocol.

15:07
<littledan>
Well, I think this is just like async/await in general: if you want to defensively allow waiting for the thing, but you don’t know whether it is really needed, use the await form. This is why using await falls back to the sync dispose method.
15:09
<littledan>
Remember, sync dispose can already fire off some kind of async cleanup action if it wants, it just cannot force the caller to block for its completion. Using await is for exactly this purpose of when you want blocking on dispose.
16:29
<rbuckton>

Is it essential that the user of the disposable resource gets to decide whether or not the dispose should be asyncly waited on?

As opposed to the resource itself deciding that, via the way it sets up the disposable symbol/prototocol.

We made the decision early on to ensure the object matches the user's intent, not the other way around, not unlike for vs for await.
20:02
<bakkot>
ljharb (or another admin): could you move https://github.com/tc39-transfer/proposal-async-iterator-helpers over to the tc39 org?