anchor.diff:      {keep_state_and_data, [{reply, gen_statem:from(), {error, {unexpected, atom()}}}]} |
       {keep_state, statedata(), [{reply, gen_statem:from(), list()}]} |
       {keep_state, statedata(), [{timeout, timeout(), get_work}]} |
  +    stop |
       {stop, {unexpected, any()}, statedata()} |
       {next_state, atom(), statedata()}.
   wait_response({call, From}
  
positive.code:     {keep_state_and_data, [{reply, gen_statem:from(), {error, {unexpected, atom()}}}]} |
      {keep_state, statedata(), [{reply, gen_statem:from(), list()}]} |
      {keep_state, statedata(), [{timeout, timeout(), get_work}]} |
      {next_state, atom(), statedata()}.
  at_rest({call, From}, Event, StateData) ->
      enqueue_work_or_stop(at_rest, Event, From, StateData);
  
negative.code:             ok = gen_statem:cast(self(), Work),
              {next_state, at_rest, NewStateData}
      end;
  at_rest(cast, shutdown, _StateData) ->
      stop;
  at_rest(cast, {get_async, {HandleEvent, AsyncMode}, Args, From},
          StateData = #{pid := Pid}) ->
      StreamRef = do_http_verb(get, Pid, Args),
  