Our enumerators produce a lot of little strings; rather than spending all
our time doing kernel context switches for 4-byte write() calls, we buffer
the iteratee to send 8KB at a time.

The IORef returned can be set to True to cancel buffering. We added this
so that transfer-encoding: chunked (which needs its own buffer and therefore
doesn't need its output buffered) can switch the outer buffer off.

Buffers an iteratee, "unsafely". Here we use a fixed binary buffer which
we'll re-use, meaning that if you hold on to any of the bytestring data
passed into your iteratee (instead of, let's say, shoving it right out a
socket) it'll get changed out from underneath you, breaking referential
transparency. Use with caution!

Buffers an iteratee, "unsafely". Here we use a fixed binary buffer which
we'll re-use, meaning that if you hold on to any of the bytestring data
passed into your iteratee (instead of, let's say, shoving it right out a
socket) it'll get changed out from underneath you, breaking referential
transparency. Use with caution!