anchor.diff:      {error, already_present | {already_started, pid()} |
               gun_open_failed | gun_open_timeout}.
   open(Host, Port, Type, Opts) ->
  -    supervisor:start_child(shotgun_sup, [{Host, Port, Type, Opts}]).
  +    supervisor:start_child(shotgun_sup, [Host, Port, Type, Opts]).
   
   %% @doc Closes the connection with the host.
   -spec close(pid()) -> ok.
  
positive.code: -spec start_link(string(), integer(), connection_type(), open_opts()) ->
      {ok, pid()} | ignore | {error, term()}.
  start_link(Host, Port, Type, Opts) ->
      gen_fsm:start_link(shotgun, [Host, Port, Type, Opts], []).
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% API
  
negative.code: -type connection() :: pid().
  -type http_verb()  :: get | post | head | delete | patch | put | options.
  -type uri()        :: iodata().
  -type headers()    :: #{_ => _} | proplists:proplist().
  -type body()       :: iodata() | body_chunked.
  -type options()    ::
          #{ async => boolean()
  