Validate if all tracks have been played at the end
This provides an extra guarantee in conjunction with #22.
It might make sense to instead return a tuple (numberOfTracksPlayed, numberOfTracksAvailable). This for me is particular useful to assert expectations. I had cases where with RAC, I was expecting an HTTP Request to be made once, and it was actually being called twice.
You can restrict the number of times a certain track, and consequently a request, should and can be played using #22, so right now you have mechanisms to catch that kind of situations where a request was performed twice instead of one.
But I see your point and one of our main goals is flexibility and with that in mind I would like to propose provide hooks to promote extensibility and which could be the base to support that kind of validations. Do you agree with that approach?