Yes, this behavior is due to Chrome locking the cache and waiting to see the result of one request before requesting the same resource again. The answer is to find a way to make the requests unique. I added a random number to the query string, and everything is working now.
For future reference, this was Chrome 39.0.2171.95.
Edit: Since this answer, I’ve come to understand that “Cache-Control: no-cache” doesn’t do what I thought it does. Despite its name, responses with this header can be cached. I haven’t tried, but I wonder if using “Cache-Control: no-store”, which does prevent caching, would fix the issue.