src/main/java/io/reactivex/Flowable.java
@CheckReturnValue
    @BackpressureSupport(BackpressureKind.ERROR)
    @SchedulerSupport(SchedulerSupport.COMPUTATION)
    public final Flowable<List<T>> buffer(long timespan, TimeUnit unit) {
        return buffer(timespan, unit, Schedulers.computation(), Integer.MAX_VALUE);
    }
@CheckReturnValue
    @BackpressureSupport(BackpressureKind.ERROR)
    @SchedulerSupport(SchedulerSupport.COMPUTATION)
    public final Flowable<List<T>> buffer(long timespan, TimeUnit unit) {
        return buffer(timespan, unit, Schedulers.computation(), Integer.MAX_VALUE);
    }
Returns a Flowable that emits buffers of items it collects from the source Publisher. The resulting
Publisher emits connected, non-overlapping buffers, each of a fixed duration specified by the
{@code timespan} argument. When the source Publisher completes, the resulting Publisher emits the current buffer
and propagates the notification from the source Publisher. Note that if the source Publisher 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/buffer5.png" alt="">
<dl>
<dt><b>Backpressure:</b></dt>
<dd>This operator does not support backpressure as it uses time. It requests {@code Long.MAX_VALUE}
upstream and does not obey downstream requests.</dd>
<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 that applies to the {@code timespan} argument
@return a Flowable that emits connected, non-overlapping buffers of items emitted by the source
Publisher within a fixed duration
@see <a href="http://reactivex.io/documentation/operators/buffer.html">ReactiveX operators documentation: Buffer</a>