diff options
author | Yash Ladha <yashladhapankajladha123@gmail.com> | 2020-10-21 04:04:10 +0300 |
---|---|---|
committer | Gireesh Punathil <gpunathi@in.ibm.com> | 2020-10-24 10:27:21 +0300 |
commit | 4d5444981afa7b8579a557be0bf85a79a21a37d5 (patch) | |
tree | 4b43060586213b9ed4d1718b92f88a66c0221c1d | |
parent | fdaf9cbfe3fad453d3d7c67c77b462834543506f (diff) |
stream: fix duplicate logic in stream destroy
Fix duplicate logic in stream destroy as the same logic is being shared
across methods and thus can be encapsulated into a single method.
PR-URL: https://github.com/nodejs/node/pull/35727
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Ricky Zhou <0x19951125@gmail.com>
-rw-r--r-- | lib/internal/streams/destroy.js | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/lib/internal/streams/destroy.js b/lib/internal/streams/destroy.js index 510f7a40c8d..7477ec97379 100644 --- a/lib/internal/streams/destroy.js +++ b/lib/internal/streams/destroy.js @@ -8,6 +8,20 @@ const { Symbol } = primordials; const kDestroy = Symbol('kDestroy'); const kConstruct = Symbol('kConstruct'); +function checkError(err, w, r) { + if (err) { + // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 + err.stack; + + if (w && !w.errored) { + w.errored = err; + } + if (r && !r.errored) { + r.errored = err; + } + } +} + // Backwards compat. cb() is undocumented and unused in core but // unfortunately might be used by modules. function destroy(err, cb) { @@ -24,20 +38,10 @@ function destroy(err, cb) { return this; } - if (err) { - // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 - err.stack; - - if (w && !w.errored) { - w.errored = err; - } - if (r && !r.errored) { - r.errored = err; - } - } // We set destroyed to true before firing error callbacks in order // to make it re-entrance safe in case destroy() is called within callbacks + checkError(err, w, r); if (w) { w.destroyed = true; @@ -66,17 +70,7 @@ function _destroy(self, err, cb) { called = true; - if (err) { - // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 - err.stack; - - if (w && !w.errored) { - w.errored = err; - } - if (r && !r.errored) { - r.errored = err; - } - } + checkError(err, w, r); if (w) { w.closed = true; |