Adds a copy of length bytes of bytes from offset, so bytes is free again when this returns. Waits while the pipe is full. Call it from one producer at a time.
kotlinx.coroutines.CancellationException
after the engine closed the reader, so a producer coroutine ends quietly.