anchor.diff:      {A, C}.
   
   timeout_sink_loop(Action) ->
  +    timeout_sink_loop(Action, 100).
  +
  +timeout_sink_loop(Action, To) ->
       put(action,  nothing),
       put(sent,    0),
       put(elapsed, 0),
  -    timeout_sink_loop(Action, 0).
  -
  -timeout_sink_loop(Action, N) ->
  +    timeout_sink_loop(Action, To, 0).
  +
  +timeout_sink_loop(Action, To, N) ->
       put(action, send),
       Start   = erlang:monotonic_time(),
       Ret     = Action(),
  
positive.code:     ?P("done"),
      ok.
  
  send_timeout_basic(Config, BinData, SndBuf, AutoClose, RNode) ->
      ?P("[basic] sink"),
      {A, Pid}              = setup_timeout_sink(Config, RNode, 1000,
  					       AutoClose, SndBuf),
      Send                  = fun() -> gen_tcp:send(A, BinData) end,
      {{error, timeout}, _} = timeout_sink_loop(Send),
  
      %% Check that the socket is not busy/closed...
      ?P("verify socket not busy/closed"),
      case gen_tcp:send(A, <<"Hej">>) of
  	{error, Reason} ->
  	    ?P("(expected) send failure: ~p", [Reason]),
  	    after_send_timeout(AutoClose, Reason),
  	    (catch gen_tcp:close(A)),
  	    exit(Pid, kill),
  	    ok;
  	ok ->
  	    %% This is a bit wierd,
  	    %% we are supposed to verify that the socket is
  	    %% not busy/closed, and a successful send is
  	    %% exactly that, *not* busy or closed.
  	    %% But the test expects to return the errors
  	    %% 'timeout' or 'enotconn', so clearly we are
  	    %% testing something else...
  	    (catch gen_tcp:close(A)),
  	    exit(Pid, kill),
  	    ct:fail("Unexpected send success")
      end.
  
  send_timeout_para(Config, BinData, BufSz, AutoClose, RNode) ->
      ?P("[para] sink"),
      {A, Pid} = setup_timeout_sink(Config, RNode, 1000, AutoClose, BufSz),
      Self = self(),
      SenderFun = fun() ->
                          ?P("[para:sender] start"),
  
negative.code:     ?P("create (slave) node"),
      {ok, RNode} = ?START_SLAVE_NODE(?UNIQ_NODE_NAME, "-pa " ++ Dir),
  
      {SndTimeout, BinData, SndBuf} = 
  	case ?IS_SOCKET_BACKEND(Config) of
  	    true ->
  		{3000, binary:copy(<<$a:8>>, 10*1024), 5*1024};
  	    false ->
  		{1000, binary:copy(<<$a:8>>, 1*1024),  16*1024}
  	end,
  
      %% Basic
      ?P("basic check wo autoclose"),
      send_timeout_basic(Config, BinData, SndBuf, SndTimeout, false, RNode),
      ?P("basic check w autoclose"),
      send_timeout_basic(Config, BinData, SndBuf, SndTimeout, true, RNode),
  
      %% Check timeout length.
      ?P("spawn sink process (check timeout length)"),
  