A generic promise based throttle