Rate-limit requests

Also automatically retries requests that were rate-limited
What is `sem`?