WritableStream DefaultWriter
Last updated Apr 23, 2026
Background
A writer is used when you want to write directly to a WritableStream, rather than piping data to it from a ReadableStream. For example:
function writeArrayToStream(array, writableStream) {
const writer = writableStream.getWriter();
array.forEach(chunk => writer.write(chunk).catch(() => {}));
return writer.close();
}
writeArrayToStream([1, 2, 3, 4, 5], writableStream)
.then(() => console.log('All done!'))
.catch(e => console.error('Error with the stream: ' + e));
Properties
writer.desiredSizeint- The size needed to fill the stream’s internal queue, as an integer. Always returns 1, 0 (if the stream is closed), or
null(if the stream has errors). writer.closedPromise\<void>- A promise that indicates if the writer is closed. The promise is fulfilled when the writer stream is closed and rejected if there is an error in the stream.
Methods
abort(reasonstringoptional): Promise\<void>- Aborts the stream. This method returns a promise that fulfills with a response
undefined.reasonis an optional human-readable string indicating the reason for cancellation.reasonwill be passed to the underlying sink’s abort algorithm. If this writable stream is one side of a TransformStream, then its abort algorithm causes the transform’s readable side to become errored withreason.
Warning
Any data not yet written is lost upon abort.
- close() : Promise\<void>
- Attempts to close the writer. Remaining writes finish processing before the writer is closed. This method returns a promise fulfilled with undefined if the writer successfully closes and processes the remaining writes, or rejected on any error.
- releaseLock() : void
- Releases the writer’s lock on the stream. Once released, the writer is no longer active. You can call this method before all pending write(chunk) calls are resolved. This allows you to queue a write operation, release the lock, and begin piping into the writable stream from another source, as shown in the example below.
let writer = writable.getWriter();
// Write a preamble.
writer.write(new TextEncoder().encode('foo bar'));
// While that’s still writing, pipe the rest of the body from somewhere else.
writer.releaseLock();
await someResponse.body.pipeTo(writable);
write(chunkany): Promise\<void>- Writes a chunk of data to the writer and returns a promise that resolves if the operation succeeds.
- The underlying stream may accept fewer kinds of type than
any, it will throw an exception when encountering an unexpected type.
Related resources
Was this helpful?
YesNo
On this page
{"@context":"https://schema.org","@type":"TechArticle","@id":"https://developers.cloudflare.com/workers/runtime-apis/streams/writablestreamdefaultwriter/#page","headline":"WritableStream DefaultWriter","description":"Use WritableStreamDefaultWriter in Workers to write data directly to a WritableStream.","url":"https://developers.cloudflare.com/workers/runtime-apis/streams/writablestreamdefaultwriter/","inLanguage":"en","image":"https://developers.cloudflare.com/workers/runtime-apis/streams/writablestreamdefaultwriter/og.png?v=2e492aaffcdb663b","dateModified":"2026-04-23","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
description: Use the connect() API to create outbound TCP connections from Workers.
title: TCP sockets
image: https://developers.cloudflare.com/workers/runtime-apis/tcp-sockets/og.png?v=892691d0262c72f7
Documentation Index
Fetch the complete documentation index at: https://developers.cloudflare.com/workers/llms.txt
Use this file to discover all available pages before exploring further.
Docs