anchor.diff:                      NewState
               end
       end.
  +
  +get_kv_token() ->
  +    [{_, Pid}] = ets:lookup(compaction_daemon, kv_throttle),
  +    concurrency_throttle:send_back_when_can_go(Pid, go),
  +    receive
  +        {'EXIT', _, Reason} = ExitMsg ->
  +            ?log_debug("Got exit waiting for token: ~p", [ExitMsg]),
  +            erlang:exit(Reason);
  +        go ->
  +            ok
  +    end.
  
positive.code: 
                %% effectful
                ensure_can_view_compact(BucketName, DDocId, Type),
  
                ?log_info("Compacting indexes for ~s", [ViewName]),
                process_flag(trap_exit, true),
  
negative.code:     %% effectful
      ensure_can_db_compact(DbName, SizeInfo),
  
      Force orelse get_kv_token(),
  
      ?log_info("Compacting `~s' (~p)", [DbName, Options]),
      Ret = case VBucket of
                master ->
  