anchor.diff:      protocol_mod :: atom(),
       protocol_opts :: list(),
       protocol_state ::term(),
  -    async_request_map :: gb_tree:tree(),
  +    async_request_map = gb_trees:empty() :: gb_tree:tree(),
       keep_alive_interval :: number(),
       keep_alive_ref :: term(),
       notification_sink :: pid() | function()
  
positive.code:         {ok, Request, NewProtocolState} ->
              State1 = State#client_state{protocol_state = NewProtocolState},
              case outgoing_message(Request, From, State1) of
                  {ok, State2} ->
                      {noreply, State2};
                  {ok, Reply, State2} ->
                      {reply, Reply, State2};
                  {error, Reason, State2} ->
                      {reply, Reason, State2}
              end;
          {error, Reason, NewProtocolState} ->
              {reply, Reason, State#client_state{protocol_state = NewProtocolState}}
  
negative.code:     end.
  
  outgoing_message(Request, From, State = #client_state{protocol_mod = ProtocolMod, protocol_opts = ProtocolOpts,
                                                        transport_mod = TransportModule, transport_state = TransportState, 
                                                        async_request_map = AsyncMap}) ->
      case hello_proto:encode(ProtocolMod, ProtocolOpts, Request) of
          {ok, BinRequest} ->
              Signature = hello_proto:signature(ProtocolMod, ProtocolOpts),
  