- there's too many generic parameters - it's not documented that you can only use channels in blocking mode. If you pass in non-blocking you either get busy loops or possibly missing data - writes should not be done in the websocket thread just in case they are blocking