I got curious how GitHub rerender components when issue updated and found they use WebSocket in SharedWorker. But why do they use it inside of SharedWorker, not in main th