Skip to content

Commit

Permalink
Can call destroy twice
Browse files Browse the repository at this point in the history
  • Loading branch information
dex4er committed Feb 5, 2018
1 parent 296fc4e commit afc98fc
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 6 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## v3.1.2 2018-02-05

* Can call `destroy` twice.

## v3.1.1 2018-02-04

* Minor bugfix in README.
Expand Down
14 changes: 9 additions & 5 deletions lib/promise-readable.js
Original file line number Diff line number Diff line change
Expand Up @@ -190,12 +190,16 @@ class PromiseReadable {
}

destroy () {
this.stream.removeListener('error', this._errorHandler)
delete this._errorHandler
if (typeof this.stream.destroy === 'function') {
this.stream.destroy()
if (this._errorHandler) {
this.stream.removeListener('error', this._errorHandler)
delete this._errorHandler
}
if (this.stream) {
if (typeof this.stream.destroy === 'function') {
this.stream.destroy()
}
delete this.stream
}
delete this.stream
}
}

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "promise-readable",
"version": "3.1.1",
"version": "3.1.2",
"description": "Return promise for readable stream",
"main": "lib/promise-readable.js",
"typings": "lib/promise-readable.d.ts",
Expand Down
24 changes: 24 additions & 0 deletions test/promise-readable.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,14 @@ Feature('Test promise-readable module with stream2 API', () => {
Then('promise returns another chunk', () => {
return promise.should.eventually.deep.equal(Buffer.from('chunk2'))
})

And('PromiseReadable object can be destroyed', () => {
promiseReadable.destroy()
})

And('PromiseReadable object can be destroyed', () => {
promiseReadable.destroy()
})
})

Scenario('Read chunks from stream with encoding', () => {
Expand Down Expand Up @@ -240,6 +248,14 @@ Feature('Test promise-readable module with stream2 API', () => {
Then('promise returns undefined value', () => {
return promise.should.eventually.to.be.undefined
})

And('PromiseReadable object can be destroyed', () => {
promiseReadable.destroy()
})

And('PromiseReadable object can be destroyed', () => {
promiseReadable.destroy()
})
})

Scenario('Read stream with error', () => {
Expand All @@ -266,6 +282,14 @@ Feature('Test promise-readable module with stream2 API', () => {
Then('promise is rejected', () => {
return promise.should.be.rejectedWith(Error, 'boom')
})

And('PromiseReadable object can be destroyed', () => {
promiseReadable.destroy()
})

And('PromiseReadable object can be destroyed', () => {
promiseReadable.destroy()
})
})

Scenario('Read stream with emitted error', () => {
Expand Down

0 comments on commit afc98fc

Please sign in to comment.