src/main/java/io/reactivex/Observable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.COMPUTATION)
    public final Observable<List<T>> buffer(long timespan, long timeskip, TimeUnit unit) {
        return buffer(timespan, timeskip, unit, Schedulers.computation(), ArrayListSupplier.<T>asCallable());
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.COMPUTATION)
    public final Observable<List<T>> buffer(long timespan, long timeskip, TimeUnit unit) {
        return buffer(timespan, timeskip, unit, Schedulers.computation(), ArrayListSupplier.<T>asCallable());
    }
Returns an Observable that emits buffers of items it collects from the source ObservableSource. The resulting
ObservableSource starts a new buffer periodically, as determined by the {@code timeskip} argument. It emits
each buffer after a fixed timespan, specified by the {@code timespan} argument. 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/buffer7.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
@param timeskip
the period of time after which a new buffer will be created
@param unit
the unit of time that applies to the {@code timespan} and {@code timeskip} arguments
@return an Observable that emits new buffers of items emitted by the source ObservableSource periodically after
a fixed timespan has elapsed
@see <a href="http://reactivex.io/documentation/operators/buffer.html">ReactiveX operators documentation: Buffer</a>