This is a high level API intended for common simple use cases. It allows handling and sending of full
WebSocket messages, as well as close and ping/pong messages. It will buffer fragmented messages up until
a limit, and does not allow streaming in fragments.

An exception that, if thrown by a WebSocket source, will cause the WebSocket to be closed with the given close
message.

An exception that, if thrown by a WebSocket source, will cause the WebSocket to be closed with the given close
message. This is a convenience that allows the WebSocket to close with a particular close code without having
to produce generic Messages.