Here is a slightly failure case generated by EQC (this one doesn't require you to notice the stop_process races w/ crash):

```
Shrinking..........(10 times)
[{set,{var,10},{call,bg_manager_eqc,set_concurrency_limit,[b,1,false]}},
 {set,{var,13},{call,bg_manager_eqc,start_process,[]}},
 {set,{var,14},{call,bg_manager_eqc,set_token_rate,['D',1]}},
 {set,{var,19},{call,bg_manager_eqc,get_token,['D',{var,13}]}},
 {set,{var,21},{call,bg_manager_eqc,get_lock,[b,{var,13},[]]}},
 {set,{var,23},{call,bg_manager_eqc,crash,[]}},
 {set,{var,24},{call,bg_manager_eqc,stop_process,[{var,13}]}},
 {set,{var,27},{call,bg_manager_eqc,revive,[]}},
 {set,{var,28},{call,bg_manager_eqc,get_token,['D']}}]


Final State:
---------------
alive = true
procs = [{<0.26915.1>,not_running}]
limits = [{b,1}]
locks = [{b,[{#Ref<0.0.0.138195>,<0.26915.1>,[],released}]}]
counts = [{'D',1}]
tokens = [{'D',1}]
---------------


background_mgr_table:
---------------
[{{given,'D'},
  {resource_entry,'D',token,<0.26912.1>,[],undefined,#Ref<0.0.0.138202>,
                  given}},
 {{info,'D'},{resource_info,token,{4294967,1},true}},
 {{info,b},{resource_info,lock,1,true}}]
---------------

bg_manager_eqc:set_concurrency_limit(b, 1, false) -> 0
bg_manager_eqc:start_process() -> <0.26915.1>
bg_manager_eqc:set_token_rate('D', 1) -> 0
bg_manager_eqc:get_token('D', <0.26915.1>) -> ok
bg_manager_eqc:get_lock(b, <0.26915.1>, []) -> #Ref<0.0.0.138195>
bg_manager_eqc:crash() -> ok
bg_manager_eqc:stop_process(<0.26915.1>) -> ok
bg_manager_eqc:revive() -> true
bg_manager_eqc:get_token('D') -> ok

Reason: {postcondition, {1, 'not <', 1}}
```