Retry works by checking if an non-protocol error happened during the call, if so an attempt to take a write lock on the client is made and a new client attempted
if both operationare succesfull the old_client is substituted with the new one.
Timeout is a single parameter for connect,read and write TCP timeouts, special handling is required for the following situation: cannot set a timeout with a proxy and cannot set timeout with multipl SocketAddrs
Since configurations parameter grow, a Config struct with a builder has been introduced
Some new errors variant has been introduced
Errors in reading input in the reader thread now warns other eventual threads with ChannelMessage::Error
Add github actions equivalent to travis cause travis is slow