browserify / browserify/http-browserify
Response inherits from Stream instead of Stream.Readable (requiring request module browserify workaround)
- Dominant language
- JavaScript
- Stars
- 245
- Forks
- 104
- PR merge metrics
- No merged PRs in 30d
Description
On node.js, the HTTP response object (which is named IncomingMessage in node.js) [inherits from Stream.Readable](https://github.com/request/request/commit/6ebd748a02a49976d41ebbc4f8396acf8fda1c14):
``` javascript
util.inherits(IncomingMessage, Stream.Readable);
```
but in http-browserify, it [only inherits from Stream](https://github.com/joyent/node/blob/1781c8b85bbabc4c5c1e054bd5c50903cc0eb47b/lib/_http_incoming.js#L80):
``` javascript
util.inherits(Response, Stream);
```
This means the full stream API is not available as it is in Node, including the [.resume](http://nodejs.org/api/stream.html#stream_readable_resume)() method. I believe this is the reason for [this ](https://github.com/request/request/commit/6ebd748a02a49976d41ebbc4f8396acf8fda1c14) [hack](https://github.com/request/request/blob/a60482bf06b7e16d3cdbabcdee7f0b62d93117c2/request.js#L973-975) in the [request](http://github.com/request/request) module:
``` javascript
} else if (response.resume) {
// response.resume should be defined, but check anyway before calling.
// Workaround for browserify.
response.resume()
}
```
to improve compatibility would it be possible for http-browserify Response to inherit from Stream.Readable? (are there any other changes needed than changing the utils.inherits call?)
edit: Stream is old-style (pre-0.10); this amounts to converting http-browserify to [Streams2](https://rawgit.com/rvagg/rvagg.github.com/master/2014/06/why-i-dont-use-nodes-core-stream-module.html)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start at the http-browserify Response definition and its util.inherits call, then compare it with Node's IncomingMessage inheritance shown in the issue. Check the request.js workaround and determine whether converting Response to Streams2 requires changes beyond inheritance. Done means the browser response exposes the expected Readable API, including resume(), without that compatibility workaround.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, node.js
- Domain
- web-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100