1. Subscribe to queryA - it is not connected yet, so it will trigger reconnect. 2. Socket opens, thus state=CONNECTED - Sends `op=connect` 3. Subscribe to queryB - SOCKET is connected (state=CONNECTED), but we haven't received op=connected yet. - BUG: it will call sendSubscription now, because it only checks current state 4. Server responds to (2) with `op=connected` 5. On op=connected, we replay pending subscriptions, including the one that was already sent in (3) That results in sending JSON over the socket in this order: 1. socket CONNECT 2. send op=connect 3. send op=subscribe (query A) 4. receive op=connected 5. send op=subscribe (query A) 6. send op=subscribe (query B) That results in having 2 subscriptions for query A, and one for query B, when we should only have one of each. I have a unit test that proves this, and a fix will be forthcoming.