The documentation for most buffer operators reads as follows:
When the source ObservableSource completes or encounters an error, the resulting ObservableSource emits the current buffer and propagates the notification from the source ObservableSource.
This is incorrect; none of the buffer operators emit their buffer before propagating an error:
@Override
public void onError(Throwable t) {
buffer = null;
actual.onError(t);
}
Note that this documentation was fixed in 1.x in #3561 (this is effectively a duplicate of issue #3560).