anchor.diff:  
   -spec open(Host :: string(), Port :: integer()) -> {ok, pid()}.
   open(Host, Port) ->
  -    proc_lib:spawn_link(fun () -> init(Host, Port) end).
  +    {ok, Pid} = gen_server:start_link(lasse_client, [Host, Port], []),
  +    Pid.
   
   -spec close(pid()) -> ok.
   close(Pid) ->
  -    Pid ! 'shutdown',
  +    gen_server:cast(Pid, 'shutdown'),
       ok.
   
   -spec get(Pid :: pid(), Url :: string()) -> ok.
  
positive.code: %%% @doc HTTP client for testing using gun.
  -module(lasse_client).
  
  -export([
           open/2,
  
negative.code: 
  -spec get(Pid :: pid(), Url :: string(), Headers :: headers()) -> ok.
  get(Pid, Url, Headers) ->
      gen_server:cast(Pid, {get, self(), Url, Headers}),
      ok.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %%% gen_server callbacks
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  init([Host, Port]) ->
      Opts = [
              {type, tcp},
              {retry, 1},
              {retry_timeout, 1}
             ],
      {ok, _Pid} = gun:open(Host, Port, Opts).
  
  handle_call(_Msg, _From, Pid) ->
      {noreply, Pid}.
  
  handle_cast({get, From, Url, Headers}, Pid) ->
      lager:info("Getting ~p", [Url]),
      StreamRef = gun:get(Pid, Url, Headers),
      response(Pid, StreamRef, From),
      {noreply, Pid};
  handle_cast(shutdown, Pid) ->
      {stop, normal, Pid}.
  
  handle_info(_Msg, Pid) ->
      {noreply, Pid}.
  
  code_change(_OldVsn, _State, _Extra) ->
      ok.
  
  terminate(_Reason, Pid) ->
      gun:shutdown(Pid),
      ok.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %%% Local functions
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  response(Pid, StreamRef, From) ->
      receive
  