send_sync has to be revisited, currently it adds a packet to the same queue as
send_async, with the difference that it blocks until the packet has been sent.
This should probably use some kind of priority queue.
The C version calls the sending method directly, which is not possible with the current design. However there the decision for which packet to send (sync/async) depends on which thread gets the lock first.