I don't understand how this one works. Reading the code I expect to get this:

- [one, two]  (after BuffersClosing is sent once at 100)
- [three, four, five] (after onComplete is received at 500)

What the unit test asserts is:

received list: [one, two]
received list: [three, four]
received list: [five]

What is it that triggers the boundary between "four" and "five"?

What I see it actually receive is:

received list: [one, two]
received list: [three, four]
received list: [five]
received list: []
received list: []
received list: []

What are the 3 empty `onNext` calls?

The following passes the unit tests and I don't expect the empty lists should be there:

```java
            inOrder.verify(observer, Mockito.times(1)).onNext(list("one", "two"));
            inOrder.verify(observer, Mockito.times(1)).onNext(list("three", "four"));
            inOrder.verify(observer, Mockito.times(1)).onNext(list("five"));
            inOrder.verify(observer, Mockito.times(3)).onNext(list()); // note the 3 calls with empty lists
            inOrder.verify(observer, Mockito.never()).onError(Mockito.any(Exception.class));
            inOrder.verify(observer, Mockito.times(1)).onCompleted();
```

MSDN docs that I think are related are here: http://msdn.microsoft.com/en-us/library/hh229432(v=vs.103).aspx

I must be misunderstanding this ... as I read that to mean we'll use the Func1 to generate an `Observable<BufferClosing>` that will emit `BufferClosing` via `onNext` to mark the buffer boundaries. I read that to say we'll have a single `Observable<BufferClosing>` and it will emit as many `BufferClosing` as it needs via `onNext`.

However, this is implemented to create a new `Observable<BufferClosing>` and re-subscribe after `onNext` is received each time.

Why does it do this instead of waiting for `onCompleted` or `onError` to be received (line 424 immediately proceeds upon receiving an `onNext` call)? Why does it assume only a single `onNext` will be sent instead of being capable of receiving multiple, or an infinite sequence?

Can you help me understand the contract and how this is known (as the MSDN docs do nothing to clarify this)?