If the buffer is full, drop whole buffer x ~> [b u f f e r] becomes [x]
If the buffer is full, drop oldest element x ~> [b u f f e r] becomes [u f f e r x]
If the buffer is full, drop new element x ~> [b u f f e r] becomes [b u f f e r]
If the buffer is full, drop youngest element x ~> [b u f f e r] becomes [b u f f e x]
If the buffer is full, fail the stream x ~> [b u f f e r] emits BufferOverflowException