anchor.diff:      putr(?REF_KEY, Ref),
       proc_lib:init_ack({ok, self()}),
       monitor(process, Pid),
  -    monitor(process, LPid),
  -    wait([peeloff], #transport{parent = Pid,
  -                               mode = {accept, LPid},
  -                               socket = LSock});
  +    MRef = monitor(process, LPid),
  +    wait([{peeloff, MRef}], #transport{parent = Pid,
  +                                       mode = {accept, LPid},
  +                                       socket = LSock});
   
   %% An accepting transport spawned at association establishment.
   i({accept, Ref, LPid, LSock, _Id}) ->
       putr(?REF_KEY, Ref),
       proc_lib:init_ack({ok, self()}),
       erlang:send_after(?ACCEPT_TIMEOUT, self(), accept_timeout),
  -    monitor(process, LPid),
  -    wait([Ref, peeloff], #transport{mode = {accept, LPid},
  -                                    socket = LSock}).
  +    MRef = monitor(process, LPid),
  +    wait([{parent, Ref}, {peeloff, MRef}], #transport{mode = {accept, LPid},
  +                                                      socket = LSock}).
   
   %% wait/2
   %%
  
positive.code: wait(Keys, S) ->
      lists:foldl(fun i/2, S, Keys).
  
  i(K, #transport{mode = {accept, _},
                  socket = LSock}
       = S) ->
      receive
          {K, Pid} when is_reference(K) ->  %% transport process started
              S#transport{parent = Pid};
          {K, Sock, T, Matches} when K == peeloff ->  %% association
              {sctp, LSock, _RA, _RP, _Data} = T,  %% assert
              ok = accept_peer(Sock, Matches),
              t(setelement(2, T, Sock), S#transport{socket = Sock});
          accept_timeout = T ->
              x(T);
  
negative.code: %% Parent process has died.
  transition({'DOWN', _, process, Pid, _}, #transport{parent = Pid}) ->
      stop;
  
  %% Timeout after transport process has been started.
  transition(accept_timeout, _) ->
  