| 00:30 | <Justin Ridgewell> | Oh god, I finally have a real use for Symbol.species: to simulate async contexts. |
| 19:42 | <Justin Ridgewell> | Nope, don't need species at all, just need to patch Promise.prototype.then and you get all the benefits. |
| 19:48 | <bakkot> | Justin Ridgewell: even given that await on a native promise will bypass Promise.prototype.then? |
| 19:49 | <Justin Ridgewell> | It's not possible to properly hijack await with species either |
| 19:49 | <Justin Ridgewell> | You have to manually restore after the await is over. |
| 19:49 | <bakkot> | true, true |
| 19:49 | <bakkot> | well |
| 19:50 | <bakkot> | you could replace Promise.prototype.constructor with something other than Promise, and then await would always fall back to the slow path where it calls the actual .then |
| 19:50 | <bakkot> | please do not do this though |
| 19:50 | <bakkot> | especially given that you're thinking of changing how the fast-path in await works |
| 19:51 | <Justin Ridgewell> | I believe the await will still resume 1 tick after settling the patched promise? |
| 19:51 | <bakkot> | depends on what your implementation of .then does |
| 19:51 | <bakkot> | it could just call the continuation synchronously, if you wanted |
| 19:51 | <bakkot> | though, again, don't |
| 19:52 | <bakkot> | oh, wait, no, that's a lie |
| 19:52 | <bakkot> | it will always take at least 1 tick, yes |
| 19:52 | <Justin Ridgewell> | Yah, you consume the userland promise into a native, then chain on the native, which must wait 1 tick. |
| 20:16 | <snek> | bring back the async context proposal |
| 20:44 | <Justin Ridgewell> | Might need to |
| 20:44 | <Justin Ridgewell> | We could do it in a way that's not so magic. |
| 23:44 | <bakkot> | oh hey, github fixed their previews for large documents like spec.html! |
| 23:44 | <bakkot> | you can actually expand context in the pr preview now, instead of those buttons silently failing |