Require the WebSocket Transport make an /abort request to abort

- Avoids timeouts being mistakenly registered as aborts
- Unifies abort logic for all transports

#2195 #1231
Added JS test to verify new WS abort logic avoids premature disconnects

#2195