I'd be concerned that the next increment exceeds the # of recorded responses. I see that other code ensures it doesn't, but in order to future proof this code - what about something like:
- on load, create a mutabledictionary copy of all request / response array pairs in the cassette
- each time a response is replayed, remove that response from the mutable copy
- if a response array is empty, refill it with the immutable copy (i.e. cycle through all the responses)