people usually try to add a callback add on to an EventEmitter usually thinking to themselves there will be only one error but usually there are several together, usually: on connection error, on write closed connection, on connection timeout, they all come together.
https://gist.github.com/shimondoodkin/5718436#file-1-callback-basics-tutorial-js-L67 On Friday, August 22, 2014 11:35:29 AM UTC+3, Alisson Cavalcante Agiani wrote: > > How do people stumble upon this kind of error? > > > On Thu, Aug 21, 2014 at 3:24 PM, Alexey Petrushin <[email protected] > <javascript:>> wrote: > >> In my understanding the problem is not that it's not possible to prevent >> callback from being called twice, with underscore it's as simple as `cb = >> _(cb).once()` - but the problem is that it's cumbersome to do it everywhere. >> >> On Wednesday, 20 August 2014 00:18:30 UTC+4, Simon Doodkin wrote: >>> >>> Not long ago, T.J. complained in an article that he doesn't likes that >>> in node.js sometimes callbacks are called more than once. >>> i have a simple solution for this if you need it. also i can suggest >>> that if you have callback problems you could use https://github.com/ >>> mattinsler/longjohn module to trace the problem. id did it several >>> times. >>> >>> cbguard: https://gist.github.com/shimondoodkin/a6762d8ab29ea497e245 >>> >>> // cbguard by Shimon Doodkin - license: public domain >>> >>> function cbguard(cb,printerr){ //kind of filter for callbacks. it prevents >>> a callback to be called twice >>> var cb1=cb; >>> return function() { >>> if(cb1) { var cb2=cb1; cb1=false; return cb2.apply(this,arguments); } >>> else if(printerr)console.log(new Error('cb called twice').stack); >>> } >>> } >>> >>> // usage example: >>> //function myfunction(cb) >>> //{ >>> // cb=cbguard(cb); // usage example >>> // // or >>> // // cb=cbguard(cb,true); // good when developing, it will protect and >>> also tell you you have a problem, here a callback is called twice here. >>> // >>> // things that are based on event emitteres are usually have problems with >>> multiple callbacks. >>> >>> >>> -- >> Job board: http://jobs.nodejs.org/ >> New group rules: >> https://gist.github.com/othiym23/9886289#file-moderation-policy-md >> Old group rules: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> --- >> You received this message because you are subscribed to the Google Groups >> "nodejs" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/nodejs/0bfddd86-2dfd-4e35-a3a4-72c323e739b7%40googlegroups.com >> >> <https://groups.google.com/d/msgid/nodejs/0bfddd86-2dfd-4e35-a3a4-72c323e739b7%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > -- Job board: http://jobs.nodejs.org/ New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/3ded9f44-c00b-4965-a1fe-b86715ae5200%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
