anchor.diff:      Reply = eovsdb_protocol:monitor(Conn, self(), DB, Select),
       MRef = erlang:monitor(process, MPid),
       {reply, Reply, State#?STATE{ monitor_ref = MRef,
  -                                 monitor_pid = MPid }};
  +                                 monitor_pid = MPid,
  +                                 monitor_select = Select}};
   handle_call(monitor_cancel, _From,
               State = #?STATE{ conn_pid = ConnPid,
                                monitor_ref = MonRef}) ->
       eovsdb_protocol:monitor_cancel(ConnPid),
       erlang:demonitor(MonRef),
  -    {reply, ok, State#?STATE{ monitor_ref = undefined}};
  +    {reply, ok, State#?STATE{ monitor_ref = undefined,
  +                              monitor_pid = undefined,
  +                              monitor_select = undefined}};
   handle_call(close_session, _From,
               State = #?STATE{ conn_pid = ConnPid, conn_ref = ConnRef }) ->
       erlang:demonitor(ConnRef),
  
positive.code:                   conn_ref               :: reference(),
                    connection_timeout = 0 :: integer(),
                    monitor_pid            :: pid(),
                    monitor_ref            :: reference()}).
  
  %% ------------------------------------------------------------------
  %% API Function Exports
  
negative.code:     {noreply, State}.
  
  handle_info({'DOWN', ConnRef, process, _ConnPid, _Reason},
              State = #?STATE{conn_ref = ConnRef,
                              monitor_ref = MonRef}) when is_reference(MonRef) ->
      ?WARN("[~p] monitor down: ~p ~n", [?MODULE, MonRef]),
      signal_connect(self()),
      erlang:demonitor(ConnRef),
      {noreply, State};
  handle_info({'DOWN', ConnRef, process, _ConnPid, _Reason},
              State = #?STATE{conn_ref = ConnRef}) ->
      signal_connect(self()),
      erlang:demonitor(ConnRef),
  