Skip to content

Instantly share code, notes, and snippets.

@juliangruber
Created February 2, 2026 07:29
Show Gist options
  • Select an option

  • Save juliangruber/e59247a7fe32f4926826f434b67eebe5 to your computer and use it in GitHub Desktop.

Select an option

Save juliangruber/e59247a7fe32f4926826f434b67eebe5 to your computer and use it in GitHub Desktop.
import http from 'node:http'
import { once } from 'node:events'
const server = http.createServer((req, res) => {
res.writeHead(200)
res.write('some data')
setTimeout(() => {
console.log('server: destroying socket')
res.socket.destroy(new Error('abort'))
console.log('server: socket destroyed')
}, 1000)
})
server.listen()
await once(server, 'listening')
const t = new TransformStream({
transform(chunk, controller) {
console.log('transform: transform()')
controller.enqueue(chunk)
},
flush() {
console.log('transform: flush()') // will not be emitted
}
})
const w = new WritableStream({
write(chunk) {
console.log('writable: write()')
}
})
const res = await fetch(`http://localhost:${server.address().port}`)
try {
await res.body.pipeThrough(t).pipeTo(w)
} catch (err) {
console.error('pipeline failed')
}
server.close()
console.log('program finished')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment