anchor.diff:              end,
               State#state{pending=[], bytes_send=NewBytesSend};
           {error, Reason} ->
  -            NewTRef =
  -            case TRef of
  -                undefined ->
  -                    lager:warning("can't send ~p bytes to ~p due to ~p, reconnect!",
  +            lager:warning("can't send ~p bytes to ~p due to ~p, reconnect!",
                             [iolist_size(Pending), Node, Reason]),
  -                    reconnect_timer();
  -                _ -> TRef
  -            end,
  -            State#state{reachable=false, reconnect_tref=NewTRef}
  +            State#state{reachable=false, reconnect_tref=reconnect_timer()}
       end.
   
   connect(#state{node=RemoteNode} = State) ->
  
positive.code:                 bytes_dropped={os:timestamp(), 0},
                  bytes_send={os:timestamp(), 0}}).
  
  -define(REMONITOR, 5000).
  -define(RECONNECT, 1000).
  
  %%%===================================================================
  
negative.code:                     Msg = [<<"vmq-connect">>, <<L:32, NodeName/binary>>],
                      case Transport:send(Socket, Msg) of
                          ok ->
                              State#state{socket=Socket, transport=Transport,
                                          %% !!! remote node is reachable
                                          reachable=true};
                          {error, Reason} ->
                              lager:warning("can't initiate connect to cluster node ~p due to ~p", [RemoteNode, Reason]),
                              State#state{reachable=false, reconnect_tref=reconnect_timer()}
                      end;
                  {error, Reason} ->
                      lager:warning("can't connect to cluster node ~p due to ~p", [RemoteNode, Reason]),
                      State#state{reachable=false, reconnect_tref=reconnect_timer()}
              end;
          {badrpc, nodedown} ->
              %% we don't scream.. vmq_cluster_mon screams
  