Rate-limit requests

Also automatically retries requests that were rate-limited
Is there any special reason for not just `sem++` once a call has been resolved?