anchor.diff:  %% Record the fact of an RPC and send the frame with the correct id.
   do_rpc(S0, Req, Ref, From) ->
       #state{ id_counter = Id,
  -            rpcs = RPC0 } = S0,
  -    RPC1 = gb_trees:insert({client, Id}, {Ref, From}, RPC0),
  +            rpcs = RPC } = S0,
  +    RPC1 = gb_trees:insert(?LOCAL(Id), {Ref, From}, RPC),
       write(S0, with_id(Id, Req)),
       S0#state{ id_counter = Id + 1, rpcs = RPC1 }.
   
  
positive.code: %% otherwise in a `receive ..`, data will arrive here.
  handle_info({tcp, _S, Data}, opened, S0) ->
      S = process_data(Data, S0),
      {next_state, opened, S};
  handle_info({'DOWN', Ref, process, Pid, Reason}, opened,
              S0 = #state{ receiver_monitor = Ref,
                           receiver = Pid }) ->
  
negative.code:                        || {T, Q} <- Subs] },
      rpc(Conn, Subscribe, self()).
  
  %% NB unsubscribe also sends `unsuback` to the calling process once
  %% the server has responded.
  -spec(unsubscribe(connection(), [topic()]) -> {ok, reference()}).
  unsubscribe(Conn, Topics) ->
      Unsub = #unsubscribe{ topics = Topics },
  