anchor.diff:  -spec produce(pid(), binary(), integer(), [{binary(), binary()}]) ->
                    {ok, reference()}.
   produce(Pid, Topic, Partition, KVList) ->
  +  Sender = self(),
     Ref = erlang:make_ref(),
  -  From = {self(), Ref},
  -  %% do not use gen_server:cast as it silently "eats" an exception
  -  %% when a message is sent to a non-existing process
  -  erlang:send(Pid, {produce, From, Topic, Partition, KVList}),
  -  {ok, Ref}.
  +  gen_server:call(Pid, {produce, Sender, Ref, Topic, Partition, KVList}).
   
   -spec debug(pid(), print | string() | none) -> ok.
   %% @doc Enable debugging on producer and its connection to a broker
  
positive.code:   State1 = State0#state{pending = [{L1, 2}]},
    ?assertEqual({ok, State1}, maybe_send(L1, State1)),
    L2 = erlang:list_to_pid("<0.0.2>"),
    FromBuffer = dict:store(L2, [d], dict:store(L1, [a, b, c], dict:new())),
    State2 = State0#state{ data_buffer = [{L1, foo}, {L2, bar}]
                         , from_buffer = FromBuffer},
    ExpectedState = #state{ data_buffer = [{L2, bar}]
                          , from_buffer = dict:erase(L1, FromBuffer)
                          , pending = [{L1, {1, [a, b, c]}}]},
    ?assertEqual({ok, ExpectedState}, maybe_send(L1, State2)),
    ok.
  
negative.code:       TopicBuffer = dict:append_list(Partition, KVList, TopicBuffer0),
        LeaderBuffer = store_topic_buffer(Topic, LeaderBuffer0, TopicBuffer),
        DataBuffer = store_leader_buffer(Leader, DataBuffer0, LeaderBuffer),
        SendersBuffer = dict:append(Leader, {Sender, Ref},
                                    State1#state.senders_buffer),
        State = State1#state{ data_buffer    = DataBuffer
                            , senders_buffer = SendersBuffer},
        {ok, Leader, State};
      {error, Error} ->
        {error, Error}
  