Design: Remove async worker

This commit remove the asyncio.async(self.run())
now, the lib does not read the complete queue when we try to unqueue
message from a it.

commands are now sequential, which helps to know when a queue is closed
or the connections is reset.

Exceptions are raised accordingly
`is False` is an anti-pattern. I would use `if not no_wait:` instead