Login forms can't easily be made async, so rate-limit them to prevent timing-based enumeration. Limiting by email can be abused to lock users out; make it easy to skip the email-based limit and fall back to IP-based limiting to avoid being weaponized for DoS.