anchor.diff:  %See if we have work. If we do, dispatch.
   %If we don't, stay in at_rest.
   %% @private
  --spec at_rest({call, pid()} | cast | info, term(), state()) ->
  +-spec at_rest({call, pid()} | cast | info, term(), statedata()) ->
       keep_state_and_data |
  -    {keep_state, state()} |
  -    {next_state, atom(), state(), timeout()}.
  +    {keep_state, statedata()} |
  +    {next_state, atom(), statedata(), timeout()}.
   at_rest({call, From}, Event, StateData) ->
       enqueue_work_or_stop(at_rest, Event, From, StateData);
   at_rest(cast, {'DOWN', _, _, _, Reason}, _StateData) ->
  
positive.code: 
  %% @private
  -spec init([{string(), integer(), connection_type(), open_opts()}]) ->
      {ok, at_rest, state()} | {stop, gun_open_timeout} | {stop, gun_open_failed}.
  init([{Host, Port, Type, Opts}]) ->
      GunType = case Type of
                    http -> tcp;
  
negative.code:     end.
  
  %% @private
  -spec append_work(work(), statedata()) -> statedata().
  append_work(Work, StateData) ->
      #{pending_requests := PendingReqs} = StateData,
      StateData#{pending_requests := queue:in(Work, PendingReqs)}.
  