you can see, if you watch the video closely, where it stalls, the top section with the server's logs stops with a last message from eventstore/badger/query.go
you didn't put that log in there, i did, one of the important changes (most of my changes were just rearranging structure so names made sense, and i rewrote the json parsing)
so i can let you know that there is probably another concurrency bug in your eventstore, i've not looked at the other implementations than the badger one but the badger one is clearly getting stuck and this is expiring the websocket context
and yes, it does look like it's on the server side in this case and in this case is triggered by the stream of events that came from primal.net, which seems to order the results by kinds, and it chokes on a stream of 10002s