reconnect is default, errors go through on_error as objects, proper close