-
-
Notifications
You must be signed in to change notification settings - Fork 33.4k
Closed
Labels
confirmed-bugIssues with confirmed bugs.Issues with confirmed bugs.streamIssues and PRs related to the stream subsystem.Issues and PRs related to the stream subsystem.
Description
- Version: master 3124146
- Platform: all
- Subsystem: stream
1e0f331 introduced another issue where end
isn't emitted. Note that this is a different issue than #18294 although they seem related.
Here is a test case. After some poking around it seems to be back pressure related.
var stream = require('stream')
var ended = false
var missing = 50
var rs = new stream.Readable({
objectMode: true,
read: () => {
if (missing--) rs.push({})
else rs.push(null)
}
})
var a = rs.pipe(new stream.PassThrough({objectMode: true}))
.pipe(new stream.PassThrough({objectMode: true}))
a.on('end', function () {
wrap.push(null)
})
var wrap = new stream.Readable({
objectMode: true,
read: () => {
process.nextTick(function () {
var data = a.read()
if (data === null) {
a.once('readable', function () {
data = a.read()
if (data !== null) wrap.push(data)
})
} else {
wrap.push(data)
}
})
}
})
wrap.resume()
wrap.on('end', function () {
ended = true
})
process.on('exit', function () {
if (!ended) throw new Error('stream should end')
})
Metadata
Metadata
Assignees
Labels
confirmed-bugIssues with confirmed bugs.Issues with confirmed bugs.streamIssues and PRs related to the stream subsystem.Issues and PRs related to the stream subsystem.