anchor.diff:  -export([
            start/0,
            stop/0,
  -         start_link/3,
  +         start_link/4,
            open/2,
            open/3,
  +         open/4,
            close/1,
            %% get
            get/2,
  
positive.code: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  %% @private
  -spec init([term()]) -> term().
  init([Host, Port, Type]) ->
      GunType = case Type of
                    http -> tcp;
                    https -> ssl
                end,
      Opts = #{transport      => GunType,
               retry          => 1,
               retry_timeout  => 1
              },
      {ok, Pid} = gun:open(Host, Port, Opts),
      State = clean_state(),
      {ok, at_rest, State#{pid => Pid}}.
  
  %% @private
  -spec handle_event(term(), atom(), term()) -> term().
  
negative.code: 
  -type connection_type() :: http | https.
  
  -type open_opts() ::
          #{
              transport_opts => [],
              timeout => pos_integer() | infinity }.
  %% transport_opts are passed to Ranch's TCP transport, which is -itself- a thin layer over gen_tcp. <br/>
  %% timeout is passed to gun:await_up. Default if not specified is 5000 ms.
  
  %% @doc Starts the application and all the ones it depends on.
  -spec start() -> {ok, [atom()]}.
  