Thanks - I can confirm the same. In my testing I thought I saw a ping coming from the server and wrongly assumed EIO=4. A red herring.
So I have still been unable to understand my core issue. I had the driver installed and working on hub1 for some time, then it one day stopped working. Initially hub rebooting cleared it but now it won't work at all. Moved it to hub2 and same pattern - working, and then didn't. So it is now installed on hub3 and working for now.
On the hubs that it doesn't work a reboot doesn't clear it, changing device driver name and back again doesn't work, and deleting and reinstalling no go.
The driver connects to the WebSocket successfully, but the sendPing job scheduled via runInMillis(state.webSocketPingInterval, sendPing) at namespace connect (parse case 40) never fires. Without the ping, the server disconnects after 85 seconds . The connection then cycles repeatedly. On the working hub, the identical driver works correctly — sendPing appears in the scheduled jobs with a future nextRun time, checkSocketTimeout has a populated prevRunTime, and the connection stays alive.
Scratching my head right now