keep track of when something can happen, if there's a minimum time interval where it should happen
You may change this period to dynamically adjust the flush period
invoke again right away