anchor.diff:    send({fcgi_abort_request, ReqId}, State).
   
   
  --spec initial_state(address(), port_number()) -> #state{}.
  -initial_state(Address, Port) ->
  -  #state{address = Address, port = Port,
  +-spec initial_state(pid(), address(), port_number()) -> #state{}.
  +initial_state(Parent, Address, Port) ->
  +  #state{parent = Parent, address = Address, port = Port,
            requests = ets:new(requests, [private]),
            monitors = ets:new(monitors, [private])}.
   
  
positive.code: %% @doc Start a new FastCGI client.
  %% @private
  start_link(Name, Address, Port) ->
    Pid = proc_lib:spawn_link(?MODULE, init, [Name, Address, Port]),
    {ok, Pid}.
  
  
  -spec init(atom(), address(), port_number()) -> no_return().
  init(Name, Address, Port) ->
    State = initial_state(Address, Port),
    register(Name, self()),
    receive_loop(State).
  
  -spec receive_loop(#state{}) -> no_return().
  receive_loop(State) ->
    receive Msg -> receive_loop(handle_msg(Msg, State)) end.
  
  -spec handle_msg(term(), #state{}) -> #state{}.
  handle_msg({ex_fcgi_begin_request, Ref, Timer, Pid, Role, Params}, State) ->
  
negative.code:     [] -> State end;
  handle_msg({tcp_closed, Socket}, State = #state{socket = Socket}) ->
    State#state{socket = undefined};
  handle_msg({system, From, Msg}, State = #state{parent = Parent}) ->
    sys:handle_system_msg(Msg, From, Parent, ?MODULE, [], State);
  handle_msg(_Msg, State) ->
    State.
  
  