added retry support and refactored throttle to avoid having to always have a scheduled executor service