anchor.diff:      exit(Reason).
   
   call(Pid, Req) ->
  -    [{Pid, R}] = call_many([Pid], Req),
  +    call(Pid, Req, []).
  +
  +call(Pid, Req, Flags) ->
  +    [{Pid, R}] = call_many([Pid], Req, Flags),
       R.
   
  -call_many(Pids, Req) ->
  +call_many(Pids, Req, Flags) ->
  +    Interruptible = proplists:get_bool(interruptible, Flags),
  +
       PidMRefs = monitor_asyncs(Pids),
       try
           send_req_many(PidMRefs, Req),
  -        recv_many(PidMRefs)
  +        recv_many(PidMRefs, Interruptible)
       after
           demonitor_asyncs(PidMRefs)
       end.
   
  -call_any(Pids, Req) ->
  +call_any(Pids, Req, Flags) ->
       PidMRefs = monitor_asyncs(Pids),
       try
           send_req_many(PidMRefs, Req),
  -        recv_any(PidMRefs)
  +        recv_any(PidMRefs, Flags)
       after
           Pids = demonitor_asyncs(PidMRefs),
           abort_many(Pids),
  
positive.code:                     recv_any_loop_resend_pending(PendingMsgs),
                      recv_resp_handle_down(Reason);
                  false ->
                      recv_any_loop(PidMRefs, [Msg | PendingMsgs])
              end
      end.
  
  recv_any_loop_resend_pending(PendingMsgs) ->
  
negative.code:               send_req(Pid, MRef, Req)
        end, PidMRefs).
  
  recv_resp(MRef, Interruptible) ->
      receive
          {MRef, R} ->
              R;
          {'DOWN', MRef, _, _, Reason} ->
              recv_resp_handle_down(Reason);
          {'EXIT', _Pid, _Reason} = Exit when Interruptible ->
              throw({interrupted, Exit})
      end.
  
  recv_resp_handle_down({raised, {T, E, Stack}}) ->
  