files/en-us/web/api/readablebytestreamcontroller/enqueue/index.md
{{APIRef("Streams")}}{{AvailableInWorkers}}
The enqueue() method of the {{domxref("ReadableByteStreamController")}} interface enqueues a given chunk on the associated readable byte stream (the chunk is transferred into the stream's internal queues).
This should only be used to transfer data to the queue when {{domxref("ReadableByteStreamController.byobRequest","byobRequest")}} is null.
enqueue(chunk)
chunk
None ({{jsxref("undefined")}}).
ReadableByteStreamController, or the stream cannot be read for some other reason, or the chunk is not an object, or the chunk's internal array buffer is non-existent, zero-length, or detached.
It is also thrown if the stream has been closed.The example in Using readable byte streams > Creating a readable socket push byte stream shows how you can use enqueue() to copy data to the stream if there is no outstanding {{domxref("ReadableByteStreamController.byobRequest","byobRequest")}}.
If there is a byobRequest then it should be used!
The code below shows data being read into an ArrayBuffer using a "hypothetical" socket.readInto() method and then enqueued (but only if data was actually copied):
const buffer = new ArrayBuffer(DEFAULT_CHUNK_SIZE);
bytesRead = socket.readInto(buffer, 0, DEFAULT_CHUNK_SIZE);
if (bytesRead === 0) {
controller.close();
} else {
controller.enqueue(new Uint8Array(buffer, 0, bytesRead));
}
{{Specifications}}
{{Compat}}