src/main/java/io/reactivex/Observable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.COMPUTATION)
    public final Observable<List<T>> buffer(long timespan, TimeUnit unit, int count) {
        return buffer(timespan, unit, Schedulers.computation(), count);
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.COMPUTATION)
    public final Observable<List<T>> buffer(long timespan, TimeUnit unit, int count) {
        return buffer(timespan, unit, Schedulers.computation(), count);
    }
Returns an Observable that emits buffers of items it collects from the source ObservableSource. The resulting
ObservableSource emits connected, non-overlapping buffers, each of a fixed duration specified by the
{@code timespan} argument or a maximum size specified by the {@code count} argument (whichever is reached
first). When the source ObservableSource completes, the resulting ObservableSource emits the current buffer and
propagates the notification from the source ObservableSource. Note that if the source ObservableSource issues an
onError notification the event is passed on immediately without first emitting the buffer it is in the process of
assembling.
<p>
<img width="640" height="320" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/buffer6.png" alt="">
<dl>
<dt><b>Scheduler:</b></dt>
<dd>This version of {@code buffer} operates by default on the {@code computation} {@link Scheduler}.</dd>
</dl>

@param timespan
the period of time each buffer collects items before it is emitted and replaced with a new
buffer
@param unit
the unit of time which applies to the {@code timespan} argument
@param count
the maximum size of each buffer before it is emitted
@return an Observable that emits connected, non-overlapping buffers of items emitted by the source
ObservableSource, after a fixed duration or when the buffer reaches maximum capacity (whichever occurs
first)
@see <a href="http://reactivex.io/documentation/operators/buffer.html">ReactiveX operators documentation: Buffer</a>