use asynchronous sending + immediate waiting.

The synchronous send methods (`sendString`, `sendBytes`) only allow for
one pending message at any time - meaning that sending of a message
before the previous one is processed will fail with an exception ([see here](http://git.io/Ja3iFg)).

This effectively makes the websocket only usable by one thread as
concurrent operations have a certain likelyhood to fail (depending on
send frequency).