anchor.diff:      {next_state, configuring, Data, {next_event, internal, EventContent}}.
   
   configuring(internal, {lashup_kv_events, NewEvent = #{key := [navstar, overlay, Subnet], ref := Ref}},
  -            #data{ref = Ref, events = OldEvent}) when is_tuple(Subnet), tuple_size(Subnet) == 2 ->
  +            Data0 = #data{ref = Ref, events = OldEvent}) when is_tuple(Subnet), tuple_size(Subnet) == 2 ->
       DeltaEvent = get_delta_event(NewEvent, OldEvent),
       lager:debug("Applying configuration: ~p", [DeltaEvent]),
  +    {ok, Timer} = timer:kill_after(?KILL_TIMER),
       navstar_overlay_configure:start_link(reply, DeltaEvent),
  -    keep_state_and_data;
  -configuring(info, {navstar_overlay_configure, applied_config, DeltaEvent}, Data0) ->
  +    Data1 = Data0#data{kill_timer = Timer},
  +    {keep_state, Data1};
  +configuring(info, {navstar_overlay_configure, applied_config, DeltaEvent}, Data0 = #data{kill_timer = Timer}) ->
  +    timer:cancel(Timer),
       lager:debug("Done applying configuration: ~p", [DeltaEvent]),
       Data1 = update_state_data(DeltaEvent, Data0),
       {next_state, batching, Data1};
  
positive.code: -export([unconfigured/3, configuring/3, batching/3]).
  
  -define(SERVER, ?MODULE).
  -define(LISTEN_TIMEOUT, 1000). %% 1 secs
  
  -include_lib("stdlib/include/ms_transform.hrl").
  
negative.code: -record(data, {
      ref :: reference(),
      pid :: undefined | pid(),
      events = maps:new() :: map(),
      kill_timer :: undefined | timer:tref()
  }).
  
  
  