anchor.diff:      exit({'client-ctrl', Tag, Reason}).
   
   
  -start_client(#{domain   := Domain,
  -	       type     := Type,
  -	       protocol := Proto,
  -	       server   := #{addr := Addr, port := Port},
  -	       cid      := ID,
  -	       clients  := Clients0} = State, Backend) ->
  +start_gen_client(#{domain   := Domain,
  +		   type     := Type,
  +		   protocol := Proto,
  +		   server   := #{addr := Addr, port := Port},
  +		   cid      := ID,
  +		   clients  := Clients0} = State, Backend) ->
       Self = self(),
  -    i("try start client ~w", [ID]),
  +    i("try start (gen) client ~w", [ID]),
       LifeTime = rand:uniform(timer:minutes(3)) + timer:minutes(2),
       {Pid, MRef} =
   	spawn_monitor(fun() ->
  -			      client_start(Self,
  -					   Backend, ID,
  -					   LifeTime,
  -					   Domain, Type, Proto,
  -					   Addr, Port)
  +			      gen_client_start(Self,
  +					       Backend, ID,
  +					       LifeTime,
  +					       Domain, Type, Proto,
  +					       Addr, Port)
   		      end),
       receive
   	{'DOWN', MRef, process, Pid, Reason} ->
  
positive.code: 	{'$socket', Sock, select, Info} ->
  	    case socket:recv(Sock) of
  		{ok, Data} ->
  		    handler_process_data(State, Data);
  		{error, Reason} ->
  		    i("recv failed: "
  		      "~n   ~p", [Reason]),
  
negative.code: 
  %% ---
  
  string_of(socket = _Module, Socket) ->
      socket:to_list(Socket);
  string_of(inet = _Module, Socket) ->
      inet:socket_to_list(Socket).
  
  
  sockmon_fun(Module) ->
      fun(Sock) -> Module:monitor(Sock) end.
  	    
  
  %% ---
  