The trick: hold the response
Long polling keeps the request shape but flips the timing. Instead of the server replying instantly with "no news," it holds the connection open and only responds when it has something to say (or when its own timeout expires). The client sees what looks like an instantaneous push, then immediately sends the next request to keep the channel primed.
Why this won the 2010s
Long polling worked through every corporate firewall and proxy that hated anything other than HTTP. Gmail used it for years. Facebook chat used it. It is still the safety net Socket.IO falls back to when WebSocket is blocked.
Why it is still a hack
Each response closes the connection. The TCP handshake gets re-paid. Proxies kill idle connections after a minute or two, so you must tune the server-side timeout below the proxy's threshold. Each hanging request consumes a server worker. And it is one-directional: the server can push fast, but the client still uses separate requests to send.