| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 70f6554 commit 77685d5
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2107,6 +2107,28 @@ run().catch(console.error); | |||
| 2107 | 2107 | after the `callback` has been invoked. In the case of reuse of streams after | |
| 2108 | 2108 | failure, this can cause event listener leaks and swallowed errors. | |
| 2109 | 2109 | ||
| 2110 | + `stream.pipeline()` closes all the streams when an error is raised. | ||
| 2111 | + The `IncomingRequest` usage with `pipeline` could lead to an unexpected behavior | ||
| 2112 | + once it would destroy the socket without sending the expected response. | ||
| 2113 | + See the example below: | ||
| 2114 | + | ||
| 2115 | + ```js | ||
| 2116 | + const fs = require('fs'); | ||
| 2117 | + const http = require('http'); | ||
| 2118 | + const { pipeline } = require('stream'); | ||
| 2119 | + | ||
| 2120 | + const server = http.createServer((req, res) => { | ||
| 2121 | + const fileStream = fs.createReadStream('./fileNotExist.txt'); | ||
| 2122 | + pipeline(fileStream, res, (err) => { | ||
| 2123 | + if (err) { | ||
| 2124 | + console.log(err); // No such file | ||
| 2125 | + // this message can't be sent once `pipeline` already destroyed the socket | ||
| 2126 | + return res.end('error!!!'); | ||
| 2127 | + } | ||
| 2128 | + }); | ||
| 2129 | + }); | ||
| 2130 | + ``` | ||
| 2131 | + | ||
| 2110 | 2132 | ### `stream.compose(...streams)` | |
| 2111 | 2133 | ||
| 2112 | 2134 | <!-- YAML | |
| Back | FazBrowse Home | New Git URL |
0 commit comments