A thought I had after the fix for #2270 I did, why do we detect transport by name rather than object equivalence, i.e. connection.transport === transports.webSockets? The name really exists so we can append it to the querystring of requests and use it in log messages. For actual transport specific logic we should really be using object equivalency.