golang.org/x/net/websockets has a similar API that is considered problematic.
See golang/go#18152 (comment)
the deeper problem with x/net/websocket is that it has the wrong API. It puts an io.Reader/Writer interface on top of what is fundamentally a message-based protocol.