Dequeue always performs an array copy and returns the bytes.
If consumer Peeks at the data, consumer now has the byte array. Consumer can follow up with a dequeue to remove the bytes from the buffer, but consumer does not necessarily need the byte array returned because consumer already has it.
It seems desireable to be able to Peek at byte buffer, and then Dequeue it without performing a needless array copy.
To me it makes sense to add a VoidDequeue method that allows dequeuing without return. Is there a particular reason this is not implemented?