I agree with Derek's comment here. Assuming that buffering samples like this is the right thing to do, I also wonder:
* should we buffer samples, or requests?
* should the samples/requests be stored in a flat array instead of a linked list? Based on usage patterns it seems that'd be easier and more efficient.