00:10
<Steve Hicks>
I'm a bit wary of overlooking the expressiveness argument. It's really easy to miss important cases and then those use cases end up high and dry with a non-solution. As an example, I'm working on a use case right now where registration context would be a huge problem - it's (again) a tracing use case: our data service allows registering interceptors for incoming data and the interceptors are what actually trigger the UI update (possibly via a signal reaction, which is another callback registration that would need to preserve call-time semantics instead of registration semantics for this all to work). If either the RPC interceptors or the signal reactions use registration context, we're sunk and there's no way to trace an interaction from the initiating event all the way to the UI update, given how loosely-coupled all the reactions in the framework are.
01:57
<Justin Ridgewell>
I'm a bit wary of overlooking the expressiveness argument. It's really easy to miss important cases and then those use cases end up high and dry with a non-solution. As an example, I'm working on a use case right now where registration context would be a huge problem - it's (again) a tracing use case: our data service allows registering interceptors for incoming data and the interceptors are what actually trigger the UI update (possibly via a signal reaction, which is another callback registration that would need to preserve call-time semantics instead of registration semantics for this all to work). If either the RPC interceptors or the signal reactions use registration context, we're sunk and there's no way to trace an interaction from the initiating event all the way to the UI update, given how loosely-coupled all the reactions in the framework are.
Can you make an example case in code?
02:17
<littledan>
Yeah sorry I don’t mean that I disagree with the expressiveness argument everywhere, just more like I would want to hear about concrete applications like what you are raising, rather than just the abstract form. Thanks for bringing this up.
07:49
<Chengzhong Wu>
What is the context of the call-time of MessagePort.p.onmessage? Is it an empty context?
07:50
<Andreu Botella>
yeah
07:51
<Chengzhong Wu>
Hmm, how is it useful if it is an empty context? Or, this is a case of inconsistency in zone.js, I assume
07:52
<Andreu Botella>
I'm not sure why they do this, but I think zone.js does give you a way to make onmessage be registration-time, it's just not enabled by default
07:52
<Andreu Botella>
I'm not sure why that is though
14:31
<Chengzhong Wu>
I am on the trip and will not be able to join the call today
16:05
<Justin Ridgewell>
Ping!
17:27
<Justin Ridgewell>
Interesting discussion about retrieving the call-time context today. Will post a GH issue later today.
23:43
<littledan>
I had a nice chat with Qard here in London about the generator concerns. Ultimately this relates to Koa’s use of generators, but that makes me think that our save-and-restore-across-yield semantics would actually be better. We were unable to come to a concrete case which is made worse by the semantics, though there will be some differences vs today’s Node AsyncLocalStorage. IMO, until I hear further evidence, I think this is a good tradeoff and we should stick with the current generator design.