anchor.diff:              ?debug(AppId, "sent STUN Bind to ~p:~p", [Ip, Port]),
               {noreply, State};
           {response, binding, TransId, Attrs} ->
  -            case lists:keytake(TransId, 1, Stuns) of
  -                false ->
  -                    ?debug(AppId, "received unexpected STUN response", []),
  -                    {noreply, State};
  -                {value, {TransId, _, From}, Stuns1} ->
  -                    gen_server:reply(From, {ok, Attrs}),
  -                    {noreply, State#state{stuns=Stuns1}}
  -            end;
  +            {noreply, do_stun_reply(TransId, Attrs, State)};
           error ->
               ?notice(AppId, "received unrecognized UDP Packet: ~p", [Packet]),
               {noreply, State}
  
positive.code:     gen_server:call(Pid, get_port).
  
  
  %% ===================================================================
  %% gen_server
  %% ===================================================================
  
negative.code: -behaviour(gen_server).
  
  -export([start_listener/4, send/2, send/4, send_stun/3, get_port/1, connect/3]).
  -export([start_ping/3, start_ping/4]).
  -export([start_link/2, init/1, terminate/2, code_change/3, handle_call/3, handle_cast/2,
               handle_info/2]).
  
  