In SRP, an authentication exchange starts with the client and server generating nonces a and b, and sending their public variants (A = g^a % N and B = (v + g^b) % N) to the other party. However, reading RFC2945, it is quite adamant that
The host MUST send B after receiving A from the client, never before.
I'm struggling to understand why this is, and as far as I can tell, the RFC doesn't explain the requirement further.
Since a and A are effectively just random numbers, sending A before receiving the B number doesn't impose any onerous requirement on the client. If, as a malicious client, I wanted to get a thousand B numbers from the server, I'd just send a thousand A numbers and it wouldn't cost me anything of note. And even if I did, I can't see what I would gain from it.
Is there an explanation for this requirement?