anchor.diff:  -record(async_job, { body          :: body_fun(),
                        handle_result :: handle_result_fun(),
                        queue         :: term(),
  +                     name          :: term(),
   
                        pid  :: undefined | pid(),
                        mref :: undefined | reference() }).
  
positive.code: -export([enter_loop/3, enter_loop/4, enter_loop/5]).
  
  %% gen_server2-specific APIs
  -export([async_job/2, async_job/3]).
  
  %% gen_server callbacks
  -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
  
negative.code:                     end),
  
      set_active_job(Queue, Job#async_job{pid = Pid, mref = MRef}).
  
  chain_handle_results([], _Result, State) ->
      {noreply, State};
  chain_handle_results([Job | Rest], Result, State) ->
      case (Job#async_job.handle_result)(Result, State) of
          {noreply, NewState} ->
              chain_handle_results(Rest, Result, NewState);
          {stop, _, _} = Stop ->
              Stop
      end.
  