Primal works a bit differently from a standard Nostr client, it uses a cache server between the client and relays. That may have something to do with it.
Discussion
I think you’re on to something. Could be a contributing factor.
Another one is that it seems Primal (maybe?) only supports secure sockets