How the buffer is managed is often critical for performance. Not taking care of it will be catastrophic for performance beyond the initial buffer size with the current implementation (a loop of `reserve(1)`).