Convert a stream to Promise












0














I need to collect all the data from the stream and resolve it as promise.



I created this stream:



class CollectToPromise extends Writable {
constructor(options) {
super();
this._result = ""

this.result = new Promise((resolve, reject) => {
this.on('finish', resolve):w
this.on('error', reject)
}).then(() => this._result)

}

_write(chunk, encoding, callback) {
this._result += chunk
callback()
}

_writev(chunks, callback) {
chunks.forEach(c => {
this._result += chunk
})
callback()
}

asPromise() {
return this.result
}
}


and I use it like this:



var r = fs.createReadStream('secrets');
const c = new CollectToPromise()
const encrypt = crypto.createCipher(algorithm, password);
r.pipe(encrypt).pipe(c).asPromise().then((res) => console.log(res)


My questions are:




  1. What do you think about the solution, including the naming?

  2. How can I avoid the warning: (node:32386) Warning: Use Cipheriv for counter mode of aes-256-ctr?










share|improve this question
























  • asPromise can be problematic depending on how you implement it. If you create the promise before asPromise is called, and if you reject that Promise due to an error occuring in th stream, then you can get a unhandled promise rejection warning if your code does not use .asPromise at all, and that waring will result in a real error in future that will exit the application.
    – t.niese
    Dec 6 at 12:23












  • >then you can get a unhandled promise rejection warning if your code does not use it's probably a downside of using any promise
    – kharandziuk
    Dec 6 at 12:43






  • 1




    Tha naming asPromise implies that this Promise is created on demand when asPromise is called. And not that it already exist before that call. So writing only r.pipe(encrypt).pipe(c); should at least not result in a unhandled promise rejection warning. Just because it would break the expectation.
    – t.niese
    Dec 6 at 12:50












  • Ok, now I see your point, thx
    – kharandziuk
    Dec 6 at 12:53


















0














I need to collect all the data from the stream and resolve it as promise.



I created this stream:



class CollectToPromise extends Writable {
constructor(options) {
super();
this._result = ""

this.result = new Promise((resolve, reject) => {
this.on('finish', resolve):w
this.on('error', reject)
}).then(() => this._result)

}

_write(chunk, encoding, callback) {
this._result += chunk
callback()
}

_writev(chunks, callback) {
chunks.forEach(c => {
this._result += chunk
})
callback()
}

asPromise() {
return this.result
}
}


and I use it like this:



var r = fs.createReadStream('secrets');
const c = new CollectToPromise()
const encrypt = crypto.createCipher(algorithm, password);
r.pipe(encrypt).pipe(c).asPromise().then((res) => console.log(res)


My questions are:




  1. What do you think about the solution, including the naming?

  2. How can I avoid the warning: (node:32386) Warning: Use Cipheriv for counter mode of aes-256-ctr?










share|improve this question
























  • asPromise can be problematic depending on how you implement it. If you create the promise before asPromise is called, and if you reject that Promise due to an error occuring in th stream, then you can get a unhandled promise rejection warning if your code does not use .asPromise at all, and that waring will result in a real error in future that will exit the application.
    – t.niese
    Dec 6 at 12:23












  • >then you can get a unhandled promise rejection warning if your code does not use it's probably a downside of using any promise
    – kharandziuk
    Dec 6 at 12:43






  • 1




    Tha naming asPromise implies that this Promise is created on demand when asPromise is called. And not that it already exist before that call. So writing only r.pipe(encrypt).pipe(c); should at least not result in a unhandled promise rejection warning. Just because it would break the expectation.
    – t.niese
    Dec 6 at 12:50












  • Ok, now I see your point, thx
    – kharandziuk
    Dec 6 at 12:53
















0












0








0







I need to collect all the data from the stream and resolve it as promise.



I created this stream:



class CollectToPromise extends Writable {
constructor(options) {
super();
this._result = ""

this.result = new Promise((resolve, reject) => {
this.on('finish', resolve):w
this.on('error', reject)
}).then(() => this._result)

}

_write(chunk, encoding, callback) {
this._result += chunk
callback()
}

_writev(chunks, callback) {
chunks.forEach(c => {
this._result += chunk
})
callback()
}

asPromise() {
return this.result
}
}


and I use it like this:



var r = fs.createReadStream('secrets');
const c = new CollectToPromise()
const encrypt = crypto.createCipher(algorithm, password);
r.pipe(encrypt).pipe(c).asPromise().then((res) => console.log(res)


My questions are:




  1. What do you think about the solution, including the naming?

  2. How can I avoid the warning: (node:32386) Warning: Use Cipheriv for counter mode of aes-256-ctr?










share|improve this question















I need to collect all the data from the stream and resolve it as promise.



I created this stream:



class CollectToPromise extends Writable {
constructor(options) {
super();
this._result = ""

this.result = new Promise((resolve, reject) => {
this.on('finish', resolve):w
this.on('error', reject)
}).then(() => this._result)

}

_write(chunk, encoding, callback) {
this._result += chunk
callback()
}

_writev(chunks, callback) {
chunks.forEach(c => {
this._result += chunk
})
callback()
}

asPromise() {
return this.result
}
}


and I use it like this:



var r = fs.createReadStream('secrets');
const c = new CollectToPromise()
const encrypt = crypto.createCipher(algorithm, password);
r.pipe(encrypt).pipe(c).asPromise().then((res) => console.log(res)


My questions are:




  1. What do you think about the solution, including the naming?

  2. How can I avoid the warning: (node:32386) Warning: Use Cipheriv for counter mode of aes-256-ctr?







javascript node.js stream






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 8 mins ago









Jamal

30.2k11116226




30.2k11116226










asked Dec 6 at 11:15









kharandziuk

4371316




4371316












  • asPromise can be problematic depending on how you implement it. If you create the promise before asPromise is called, and if you reject that Promise due to an error occuring in th stream, then you can get a unhandled promise rejection warning if your code does not use .asPromise at all, and that waring will result in a real error in future that will exit the application.
    – t.niese
    Dec 6 at 12:23












  • >then you can get a unhandled promise rejection warning if your code does not use it's probably a downside of using any promise
    – kharandziuk
    Dec 6 at 12:43






  • 1




    Tha naming asPromise implies that this Promise is created on demand when asPromise is called. And not that it already exist before that call. So writing only r.pipe(encrypt).pipe(c); should at least not result in a unhandled promise rejection warning. Just because it would break the expectation.
    – t.niese
    Dec 6 at 12:50












  • Ok, now I see your point, thx
    – kharandziuk
    Dec 6 at 12:53




















  • asPromise can be problematic depending on how you implement it. If you create the promise before asPromise is called, and if you reject that Promise due to an error occuring in th stream, then you can get a unhandled promise rejection warning if your code does not use .asPromise at all, and that waring will result in a real error in future that will exit the application.
    – t.niese
    Dec 6 at 12:23












  • >then you can get a unhandled promise rejection warning if your code does not use it's probably a downside of using any promise
    – kharandziuk
    Dec 6 at 12:43






  • 1




    Tha naming asPromise implies that this Promise is created on demand when asPromise is called. And not that it already exist before that call. So writing only r.pipe(encrypt).pipe(c); should at least not result in a unhandled promise rejection warning. Just because it would break the expectation.
    – t.niese
    Dec 6 at 12:50












  • Ok, now I see your point, thx
    – kharandziuk
    Dec 6 at 12:53


















asPromise can be problematic depending on how you implement it. If you create the promise before asPromise is called, and if you reject that Promise due to an error occuring in th stream, then you can get a unhandled promise rejection warning if your code does not use .asPromise at all, and that waring will result in a real error in future that will exit the application.
– t.niese
Dec 6 at 12:23






asPromise can be problematic depending on how you implement it. If you create the promise before asPromise is called, and if you reject that Promise due to an error occuring in th stream, then you can get a unhandled promise rejection warning if your code does not use .asPromise at all, and that waring will result in a real error in future that will exit the application.
– t.niese
Dec 6 at 12:23














>then you can get a unhandled promise rejection warning if your code does not use it's probably a downside of using any promise
– kharandziuk
Dec 6 at 12:43




>then you can get a unhandled promise rejection warning if your code does not use it's probably a downside of using any promise
– kharandziuk
Dec 6 at 12:43




1




1




Tha naming asPromise implies that this Promise is created on demand when asPromise is called. And not that it already exist before that call. So writing only r.pipe(encrypt).pipe(c); should at least not result in a unhandled promise rejection warning. Just because it would break the expectation.
– t.niese
Dec 6 at 12:50






Tha naming asPromise implies that this Promise is created on demand when asPromise is called. And not that it already exist before that call. So writing only r.pipe(encrypt).pipe(c); should at least not result in a unhandled promise rejection warning. Just because it would break the expectation.
– t.niese
Dec 6 at 12:50














Ok, now I see your point, thx
– kharandziuk
Dec 6 at 12:53






Ok, now I see your point, thx
– kharandziuk
Dec 6 at 12:53

















active

oldest

votes











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");

StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f209148%2fconvert-a-stream-to-promise%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Code Review Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f209148%2fconvert-a-stream-to-promise%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

List directoties down one level, excluding some named directories and files

list processes belonging to a network namespace

list systemd RuntimeDirectory mounts