Well IMHO, if it "may" fail, then you should handle explicitly that case.

On Friday, 26 July 2013 17:42:51 UTC+2, Vivek Goel wrote:
>
> I am using a third party library. Which is using node domain for error 
> handling. If the callback function passed to that third party library have 
> any error, It end-up in calling my callback multiple times.
>
> Example code is:
> //Read this code from bottom to top
>
> var startFunction = function (callback) {
>
>     //Call thirdParty function and wait for response
>     thirdPartyFunction(function (error, data) {
>         console.log("Called with");
>         console.log(arguments);
>
>         //Assume there is an error in my callback function
>         setTimeout(function () {
>             dd
>             callback.apply(null);
>         }, 2000);
>     });
>
> }
>
>
> //ThirdParty function don't modify anything here
> var thirdPartyFunction = function (callback) {
>     var Domain = require("domain");
>
>     var domain = Domain.create();
>     var d = require('domain').create();
>
>     d.on('error', function (er) {
>         console.log("hi");
>         callback.apply(null, er);
>     });
>
>     d.run(function () {
>
>         setTimeout(function () {
>             callback.apply(null, [null, "Hello"]);
>         }, 1000);
>
>
>     });
> }
>
> //Call Start function and wait for response
> startFunction(function () {
>     console.log("Got response")
> });
>
> We reported this bug to third party lib and they have modified the source 
> code. Like:
>
>     d.on('error', function (er) {
>
>         if (isCalled == false) {
>             isCalled = true;
>         } else {
>             return;
>         }
>
>         console.log("hi");
>         callback.apply(null, er);
>     });
>
> Now problem of function getting called multiple times is solved. But final 
> callback is never getting called.
>
> How to handle this behavior of node ?
>
> If third party lib modify there code to, It result in application crash. 
> Putting a wrapper domain also not help.
>
>  d.on('error', function (er) {
>
>         if (isCalled == false) {
>             isCalled = true;
>         } else {
>             throw new Error("Getting called");
>             return;
>         }
>
>         console.log("hi");
>         callback.apply(null, er);
>     });
>
>
> What is the best method of handing such cases in node ?
>  What I want is startFunction should come back in all cases. 
>
>
>
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
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 post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
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].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to