Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

stream, http, http2: make all stream.end() call return this #18780

Closed
wants to merge 3 commits into from

Conversation

mcollina
Copy link
Member

This PR make all the instances of stream.end() return this. This includes both http and http2 pseudo-writables.

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines
Affected core subsystem(s)

stream, http, http2

@nodejs-github-bot nodejs-github-bot added the lib / src Issues and PRs related to general changes in the lib or src directory. label Feb 14, 2018
@mcollina
Copy link
Member Author

cc @mafintosh @nodejs/streams

@mscdex
Copy link
Contributor

mscdex commented Feb 14, 2018

Can this change in return type really be justified?

Also:

  • an early return is missed in OutgoingMessage.end()
  • shouldn't this be semver-major because of the change in return type?

@benjamingr benjamingr added the semver-major PRs that contain breaking changes and should be released in the next major version. label Feb 14, 2018
@benjamingr
Copy link
Member

@mcollina I'm guessing we missed some context - any reading material about this change or some rationale?

@jasnell
Copy link
Member

jasnell commented Feb 14, 2018

Adding a return type where there was previously not one should not be semver-major as it shouldn't break any prior assumptions.

@benjamingr
Copy link
Member

@jasnell uhh.. I think it can break assumptions?

I've seen return somethingThatReturnsUndefined() in JavaScript quite a few times in order to avoid doing somethingThatReturnsUndefined(); return; in two lines. I don't like it, but it's definitely there - and this isn't a change in an experimental library - it's core HTTP which everyone builds on.

@jasnell
Copy link
Member

jasnell commented Feb 14, 2018

Bleh, ok. Major it is then.

@mcollina
Copy link
Member Author

I forgot to put the label on it, the intention is it to be semver-major.

Basically this cleans up the situation for .end() in streams. Currently we have net and tls that return this, the stream module that returns undefined, and http that return whatever _send() returns. I thought that the least disruptive change would be to have it return this everywhere.

Copy link
Member

@benjamingr benjamingr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, that explains it and this does bring consistency. Actual code LGTM

@mcollina
Copy link
Member Author

doc/api/http.md Outdated
changes:
- version: REPLACEME
pr-url: https://github.com/nodejs/node/pull/18780
description: This method now returns a reference to `http.ClientRequest`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: how about using just ClientRequest to be consistent with the other comments?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@BridgeAR BridgeAR added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Feb 16, 2018
@mcollina
Copy link
Member Author

@mscdex are you ok with this change then?

@BridgeAR
Copy link
Member

@mcollina
Copy link
Member Author

Landed as f6721c2, 8118da7 and 3d93f39.

@mcollina mcollina closed this Feb 19, 2018
@mcollina mcollina deleted the end-this branch February 19, 2018 10:32
mcollina added a commit that referenced this pull request Feb 19, 2018
PR-URL: #18780
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
mcollina added a commit that referenced this pull request Feb 19, 2018
PR-URL: #18780
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
mcollina added a commit that referenced this pull request Feb 19, 2018
PR-URL: #18780
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
@benjamingr
Copy link
Member

Awesome work, adding "don't land on" tags.

MayaLekova pushed a commit to MayaLekova/node that referenced this pull request May 8, 2018
PR-URL: nodejs#18780
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
MayaLekova pushed a commit to MayaLekova/node that referenced this pull request May 8, 2018
PR-URL: nodejs#18780
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
MayaLekova pushed a commit to MayaLekova/node that referenced this pull request May 8, 2018
PR-URL: nodejs#18780
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. lib / src Issues and PRs related to general changes in the lib or src directory. semver-major PRs that contain breaking changes and should be released in the next major version.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants