extract Throttle logic

Now we are able to given a special Throttle implementation, or use the Time one.
Merge pull request #46 from arthurnn/throttle_refactor

extract Throttle logic