_http_outgoing.tsline 996:toLowerCasee()typo -- CRITICAL. BreaksuniqueHeadersfeature entirely._http_outgoing.ts:write()does not setkNeedDrain-- HIGH. Backpressure/drain events broken._http_outgoing.ts:addTrailers()not implemented -- HIGH. Throws on use._http_outgoing.ts: Cookie header joining missing -- HIGH. Multiple cookie values sent as separate headers._http_outgoing.ts:_removedConnectionforces close -- HIGH. Connection always closed when default headers removed._http_server.js: MissingrequestTimeout/headersTimeout-- HIGH. No slow-loris protection.
Investigation of denoland/deno#30977
vue-tsc -b under Deno silently ignores .vue files because Deno's CJS require
system bypasses fs.readFileSync, which @volar/typescript relies on to inject
its TypeScript compiler patches.
| # Investigation: Deno Issue #15176 — Resolving Promises in `beforeunload` Event | |
| ## The Problem | |
| ```js | |
| await new Promise(resolve => { | |
| window.onbeforeunload = resolve; | |
| }); | |
| ``` |
A dev server is a local HTTP server optimized for the development loop. Its job is to serve your application locally with features that make iteration fast.
- Hot Module Replacement (HMR) — when you save a file, only the changed module is swapped in the browser without a full page reload. State (like form inputs, scroll position) is preserved.
- On-demand transformation — instead of bundling everything upfront, modules are transformed (TypeScript → JS, JSX → JS, etc.) only when the browser requests them. This makes startup near-instant even for large projects.
- File watching — monitors the filesystem and triggers rebuilds/HMR updates.
- Error overlay — compilation errors are shown directly in the browser.
URL.revokeObjectURL() after new Worker(blobURL) causes intermittent "Module not found" errors because blob content is fetched asynchronously on the worker thread, not during construction.
Works in Chrome/Firefox. Fails in Deno.
Fix: node:worker_threads Worker Idle Termination (denoland/deno#23169)
Workers created with node:worker_threads are terminated when idle, even if they have ref'd transferable objects like MessagePort or SharedArrayBuffer that should keep them alive.
There are two independent keepalive decision systems, and that's the root problem:
| /******/ (() => { // webpackBootstrap | |
| /******/ "use strict"; | |
| /******/ var __webpack_modules__ = ({ | |
| /***/ "./src/base.ts": | |
| /*!*********************!*\ | |
| !*** ./src/base.ts ***! | |
| \*********************/ | |
| /***/ (function(__unused_webpack_module, exports, __webpack_require__) { |
| addEventListener("fetch", (event) => { | |
| new ArrayBuffer(1 << 30); | |
| }); |
| addEventListener("fetch", (event) => { | |
| while (true) {} | |
| }); |