anchor.diff:           terminate/2,
            code_change/3]).
   
  --record(state, {socket :: inet:socket(),
  +-record(state, {socket :: undefined | inet:socket(),
  +                address :: address(),
  +                port :: port_number(),
                   table :: ets:tid(),
                   next_id = 1 :: req_id()}).
   
  
positive.code:                  ({'EXIT', reference(), process, pid(), term()}, #state{}) ->
                     {noreply, #state{}};
                   ({tcp_closed, inet:socket()}, #state{}) ->
                     {stop, closed, #state{}}.
  %% @private
  handle_info({tcp, Socket, Data}, State = #state{socket = Socket}) ->
    % lookup before decode?
  
negative.code:   do_abort(Ref, State),
    {noreply, State};
  handle_info({tcp_closed, Socket}, State = #state{socket = Socket}) ->
    {noreply, State#state{socket = undefined}};
  handle_info(_Info, State) ->
    {noreply, State}.
  
  