#23 better handled failures in disconnect()