I should add that this is with rxscala 0.26.4, and the mongodb scala driver 2.1.0.
I've tried replacing the mongodb observable with an rx observable, i.e.:
rx.Observable from (1 to count)
and that works fine.
It appears that the rx zip function is calling request() twice: once on setProducer(), and once on onStart(). It then throws the error as soon as the n values of the first call have been emitted, and it starts servicing the second request. So e.g. if setProducer calls request(128), and onStart also calls request(128), then it throws on the 129th emission.