handle rate limit with a new timestamp, instead of setTimeout