00:49:18  * aki_joined
00:49:34  * akirosequit (Ping timeout: 240 seconds)
00:49:35  * aki_changed nick to akirose
01:05:07  * AtumTquit (Quit: AtumT)
01:33:11  * nikivi29joined
01:33:32  * nikivi29quit (Remote host closed the connection)
02:32:56  * codebamjoined
02:41:04  * codebamquit (Remote host closed the connection)
02:49:26  * dimi34ka20joined
02:49:35  * tasse6joined
02:50:23  * tasse6quit (Remote host closed the connection)
02:53:31  * dimi34ka20quit (Killed (Unit193 (Spam is not permitted on freenode.)))
02:55:30  * aki_joined
02:56:27  * akirosequit (Ping timeout: 240 seconds)
02:56:27  * aki_changed nick to akirose
03:43:51  * jmdyckquit (Remote host closed the connection)
05:02:10  * aki_joined
05:02:33  * akirosequit (Ping timeout: 245 seconds)
05:02:33  * aki_changed nick to akirose
06:57:23  * Aquazijoined
07:07:22  * aki_joined
07:08:45  * akirosequit (Ping timeout: 252 seconds)
07:08:45  * aki_changed nick to akirose
07:29:03  * akoserwa|WFHjoined
07:33:04  * akoserwa|WFHquit (Client Quit)
09:14:27  * akirosequit (Ping timeout: 240 seconds)
09:15:02  * akirosejoined
09:59:46  * Ourjoined
10:02:33  * Ourquit (Remote host closed the connection)
11:22:04  * akirosequit (Ping timeout: 246 seconds)
11:23:44  * akirosejoined
12:26:19  * mitch_16joined
12:27:04  * mitch_16quit (Remote host closed the connection)
12:30:00  * AtumTjoined
12:36:09  * jmdyckjoined
13:21:52  * d9b4bef96joined
13:24:42  * d9b4bef96quit (Remote host closed the connection)
13:30:10  * akirosequit (Ping timeout: 246 seconds)
13:30:49  * akirosejoined
14:12:40  * Bakkotquit (Ping timeout: 252 seconds)
14:32:10  * gibson042quit (Quit: Leaving.)
14:57:30  * epic15joined
15:00:19  * epic15quit (Remote host closed the connection)
15:13:55  * SuperSeriousCat3joined
15:18:38  * SuperSeriousCat3quit (Remote host closed the connection)
15:21:01  * nhandler2joined
15:24:52  * Aquaziquit (Quit: Connection closed for inactivity)
15:25:43  * nhandler2quit (Remote host closed the connection)
15:33:02  * grossing24joined
15:35:56  * grossing24quit (Remote host closed the connection)
15:38:23  * akirosequit (Ping timeout: 245 seconds)
15:39:04  * akirosejoined
16:29:09  <devsnek>I wonder if it would be possible for the spec to render progressively
16:29:40  <devsnek>like headings first, then start inserting all the content
16:29:55  <devsnek>would probably help with freezing people's computers
16:47:11  * jackmcbarn2joined
16:47:20  * jackmcbarn2quit (Remote host closed the connection)
17:03:19  * towcjoined
17:06:29  <towc>any plans to make multiple non-blocking awaits less awkward? I'm writing something in the backend and calling 2 apis that don't need to wait for each other, like this:
17:06:34  <towc>const thing1 = await aThing();
17:06:34  <towc>const thing2 = await notDirectlyRelatedThing();
17:06:51  <towc>now, this is blocking, but easy to read. What I'm currently doing is this:
17:06:56  <towc>const [
17:06:57  <towc> thing1,
17:06:57  <towc> thing2,
17:06:57  <towc>] = await Promise.all([
17:06:58  <towc> aThing(),
17:07:00  <towc> notDirectlyRelatedThing(),
17:07:02  <towc>]);
17:07:45  <towc>first possible improvement I thought of was wrapping awaited [] in Promise.alls:
17:07:45  <towc>const [
17:07:46  <towc> thing1,
17:07:46  <towc> thing2,
17:07:46  <towc>] = await [
17:07:46  <towc> aThing(),
17:07:47  <towc> notDirectlyRelatedThing(),
17:07:49  <towc>];
17:08:22  <towc>but stuff like `const mightBeArray = await mightReturnArray();` would potentially get messy
17:09:32  <towc>this one is kind of urgh and I guess a bit of a mess to implement and get the behaviour right on, but it would be neat:
17:09:33  <towc>const thing1 = await continue aThing();
17:09:33  <towc>const thing2 = await notDirectlyRelatedThing();
17:09:51  <towc>or more concisely:
17:09:52  <towc>const thing1 = await* aThing();
17:09:52  <towc>const thing2 = await notDirectlyRelatedThing();
17:09:55  <towc>thoughts?
17:11:16  * Bakkotjoined
17:11:37  <towc>or
17:11:39  <towc>await const {
17:11:39  <towc> thing1 = aThing(),
17:11:39  <towc> thing2 = notDirectlyRelatedThing(),
17:11:39  <towc>};
17:12:15  <towc>but this is fairly inflexible, if you maybe only want side effects, or have some lets in there
17:16:08  <ljharb>towc: the solution is indeed Promise.all - ie, `const [thing1, thing2] = await Promise.all([aThing(), notDirectlyRelatedThing()])`
17:16:32  <ljharb>if that's awkward because it's not directly related, then that's because of doing those things together, not because of the specific syntax
17:17:29  <devsnek>`return continue` and `await continue` :P
17:18:10  <ljharb>it wouldn't make sense to be able to `await` and then have execution keep happening - at that point it's just a promise, and you can just do `const thing1Promise = aThing()`
17:34:51  <towc>well, I'm using both thing1 and thing2 in the next line
17:35:13  <towc>and both awaited functions use a parameter declared in the line right before
17:35:52  <towc>so in that sense, it makes sense for me to call the apis right after each other, rather than in some different parts of the code
17:36:57  <towc>and sure, I guess I can do
17:36:58  <towc>const thing2p = notDirectlyRelatedThing();
17:36:58  <towc>const thing1 = await aThing();
17:36:58  <towc>const thing2 = await thing2p;
17:36:59  <towc>but urgh
17:45:21  * aki_joined
17:46:28  * akirosequit (Ping timeout: 272 seconds)
17:46:29  * aki_changed nick to akirose
17:52:48  <ljharb>towc: you should be doing Promise.all.
17:54:12  <ljharb>towc: my general advice to people is: 1) do everything with nothing but promises first - no chains, every `.then` or `.catch` goes in a separate variable. 2) condense what makes sense into chains. 3) use `Promise.all` to try to condense multiple promises into one whenever it makes sense. 4) use `await` *only* when your function can't continue without resolving a single promise, on that promise
17:54:45  <ljharb>towc: once you get practice doing that a few times, you can skip straight to 3 and 4, and you'll avoid unnecessarily serializing things by overusing `await`
18:03:06  <towc>that was my thinking as well, but the trend seems to be to move everything to async/await. I disliked it, but I'm getting used to it
18:03:35  <towc>also, I think the node team is also pushing for people to stop using raw promises
18:09:32  <ljharb>everything can't move to async/await - it's a complement to promises, not a replacement of it.
18:10:07  <towc>I agree, but that doesn't stop people from trying
18:12:08  <towc>I haven't seen a Promise.all in a codebase in quite some time, since async/await became mainstream. I think it's because people just associate raw promises with "old" and look for other pre-made abstractions that do the same thing, but just hide that you're actually overcomplicating a promise
18:12:26  <towc>for example, the abuse that rxjs is getting
18:13:15  <towc>or others decide to make a needlessly blocking await call because they either don't realize what's happening, or for lack of pretty alternatives
18:14:14  <towc>ofc I don't pretend to have seen more codebases than you or be more attentive, but these are things I'm observing
18:15:04  <towc>and I've literally been asked to turn code from promise-based to async/await a couple of times
18:15:36  <towc>well, it's all promise-based, but with exposed promises, I guess? Promises in business logic?
18:17:13  <towc>I guess the appeal comes from how you can do these things in python and other languages pretty easily, with a syntax similar to our async/await, even if async/await is more limited? I don't know much about how other languages/platforms handle async
18:17:34  <towc>but I haven't heard of people using the equivalent of raw promises in python
18:22:30  <ljharb>towc: i agree that overusing `await` is an easy trap to fall into
18:24:21  * alienatedjoined
18:27:10  * alienatedquit (Remote host closed the connection)
18:48:47  <Domenic>devsnek: https://valdrinkoshi.github.io/virtual-scroller/demo/html-spec/ is a related experiment
18:49:11  <devsnek>Domenic: huh
18:49:43  <devsnek>lol tf firefox doesn't support streams at all
18:50:12  <devsnek>Domenic: oh this makes more sense now
18:50:41  <devsnek>yeah this is kinda like what i was thinking except it needs to be a bit smarter
18:52:02  <devsnek>i was thinking along the lines of something like the glimmer vm
18:53:28  <Domenic>We have plans to make it smarter, yeah. https://groups.google.com/a/chromium.org/forum/m/#!msg/blink-dev/Icw_sU6PqVA/8hwXw0jTDwAJ
18:55:53  <devsnek>isn't there also work on new foldable elements for mobile?
18:55:57  <devsnek>this could all sorta tie in
18:56:33  <Domenic>Not sure, haven't heard of that
18:57:24  <devsnek>there was some presentation about chrome mobile perf and wanting to look into letting developers mark elements as safe to not consider in compositing etc when off screen
19:10:25  * caiolimaquit (*.net *.split)
19:10:25  * samthquit (*.net *.split)
19:10:25  * brianloveswordsquit (*.net *.split)
19:10:25  * bterlsonquit (*.net *.split)
19:10:27  * TabAtkinsquit (*.net *.split)
19:10:28  * surmaquit (*.net *.split)
19:10:28  * evilpiequit (*.net *.split)
19:10:28  * rbucktonquit (*.net *.split)
19:10:28  * bstoroz_quit (*.net *.split)
19:10:29  * paulfryzelquit (*.net *.split)
19:10:29  * plumaquit (*.net *.split)
19:10:29  * mattijsquit (*.net *.split)
19:10:29  * gskachkov_quit (*.net *.split)
19:10:30  * fletquit (*.net *.split)
19:10:31  * jorendorffquit (*.net *.split)
19:10:31  * thejameskylequit (*.net *.split)
19:10:31  * refackquit (*.net *.split)
19:10:31  * nomadtechiequit (*.net *.split)
19:10:39  * evilpiejoined
19:10:41  * gskachkov_joined
19:10:42  * nomadtechiejoined
19:10:43  * bstoroz_joined
19:10:52  * caiolima_joined
19:10:52  * caiolima_quit (Changing host)
19:10:52  * caiolima_joined
19:10:56  * brianloveswordsjoined
19:10:57  * surma_joined
19:10:57  * bterlsonjoined
19:11:24  * refackjoined
19:11:27  * mattijsjoined
19:11:33  * rbucktonjoined
19:11:35  * TabAtkinsjoined
19:11:35  * thejameskylejoined
19:11:35  * samthjoined
19:11:37  * fletjoined
19:11:40  * plumajoined
19:11:41  * paulfryzeljoined
19:11:45  * jorendorffjoined
19:13:19  * samthquit (Changing host)
19:13:19  * samthjoined
19:13:50  * plumaquit (Changing host)
19:13:50  * plumajoined
19:13:50  * plumaquit (Changing host)
19:13:50  * plumajoined
19:14:16  * timfijoined
19:17:02  * timfiquit (Remote host closed the connection)
19:18:31  * towcquit (Quit: Leaving)
19:35:36  * basicdaysquit (Ping timeout: 250 seconds)
19:52:05  * aki_joined
19:52:47  * akirosequit (Ping timeout: 240 seconds)
19:52:47  * aki_changed nick to akirose
19:55:21  * e17joined
19:58:11  * e17quit (Remote host closed the connection)
20:03:49  * nOgAnOo10joined
20:06:12  * grumblejoined
20:08:28  * nOgAnOo10quit (Remote host closed the connection)
20:16:13  * grumblepart
21:41:01  * alextes_quit (Quit: Connection closed for inactivity)
21:58:09  * siniStarjoined
21:59:17  * aki_joined
21:59:47  * akirosequit (Ping timeout: 244 seconds)
21:59:47  * aki_changed nick to akirose
22:01:04  * siniStarquit (Remote host closed the connection)
23:20:12  * Banoujoined
23:22:14  <Banou>Hello
23:24:26  <devsnek>hi
23:25:01  <Banou>I would like to make a proposal, is there anyone familiar with the whole thing ? i've made a small repo demonstrating it https://github.com/Banou26/proposal-optional-destructuring
23:40:09  <ljharb>it seems like it would be better either as part of optional chaining, or as a follow up proposal after that advances
23:59:59  <rkirsling>also while I completely empathize with the motivation, it seems like it'd be received as directly "patching over" the decision to differentiate null and undefined in (default params and) destructuring -- i.e. "it'd break the web to go back on that decision so here's a brand-new feature instead" :(