anchor.diff:                  fun proc_lib:spawn/1
           end,
   
  +    Parent           = self(),
  +    ParentController = get_controller(),
  +
       SpawnFun(
         fun () ->
  -              async_init(Parent, PDict, Opts, Fun)
  +              async_init(Parent, ParentController, Opts, Fun)
         end).
   
   perform(Fun) ->
  
positive.code:       fun (Msg) ->
                self() ! Msg
        end, lists:reverse(PendingMsgs)).
  
negative.code:                                         erlang:get_stacktrace()}}
                        end,
  
                    Controller ! {Reply, R}
            end),
  
      Type = proplists:get_value(type, Opts, wait),
      async_loop_wait_result(Type, MRef, Child, Reply, []).
  
  maybe_register_with_parent_async(undefined) ->
      ok;
  maybe_register_with_parent_async(Pid) ->
      register_with_parent_async(Pid).
  
  register_with_parent_async(Pid) ->
      controller = get_role(),
      ok = call(Pid, {register_child_async, self()}).
  
  async_loop_wait_result(Type, ParentMRef, Child, Reply, ChildAsyncs) ->
  