You can also send a "pending" reply if you're already processing one INVITE and get another in the meantime.
Yes, the pending idea is a way to improve basic delaying. But the thing is that ACK and INVITE are separate transactions, so testing if the first INVITE transaction has ended is not enough, we also need to look for the subsequent ACK transaction.