<!--__This module is compatible with the [Promistream](https://promistream.cryto.net/) standard, version 1.0.0 - the latest at the time of writing.__ -->
You'll probably only need this module if you're implementing a custom (transform) stream of some sort.
How it works: simply place a buffer stream *after* the stream whose results you want to buffer, in the pipeline. It will accept arrays of values from the previous stream, store them internally, and dispense the values *in* those arrays one at a time, whenever the next stream in the pipeline asks for a value.
If the previous stream returns an empty array, the buffer stream will keep requesting new values from the previous stream until it gets either a non-empty array or an `EndOfStream`. This is what allows streams to return zero values.
## Example
In the following example, the `duplicateEven` stream always returns exactly one value at a time, even though the internal `buffer` stream *receives* arrays with two or zero values from the `map` stream before it.
This example also demonstrates how you can create custom streams by piping together existing stream modules.