Giter Site home page Giter Site logo

Comments (3)

kattrali avatar kattrali commented on July 22, 2024

Thanks for the report, @Grmiade. After some testing, this issue seems to be unrelated to the HTTP method but rather to the active domain changing, as is the case if the error is triggered by an unhandled promise rejection or other event emitter. (I have an example of promise rejection specifically here)

In Node v8.0.0, promises run in the domain which call them, though the implementation does not provide a way to capture that domain externally without wrapping the promise, and even then, domain.active is unset. The correct solution would be to remove the reliance on domains, though this probably will need to wait for the stabilization of async hooks or similar to handle asynchronous resource-specific data.

Looking into this further.

from bugsnag-node.

Fjandin avatar Fjandin commented on July 22, 2024

Would it be an idea to have some sort of fallback where you can set the requestData on the request object itself?

from bugsnag-node.

bengourley avatar bengourley commented on July 22, 2024

Hey @Grmiade have you had a chance to try Node v8 yet? As @kattrali mentioned, the native promises there should behave in a slightly better way (if indeed you were using promises).

Unfortunately there's not a lot we can do here… domains are fundamentally flawed (which is why they have been deprecated) in ways such as this, but there isn't a direct replacement yet for the features that they provide. We continue to watch this space and will be doing some of our own investigation with async hooks. For the near future at least we just have to stick with the current implementation, which is better than not using domains at all!

In response to your suggestion @Fjandin… yes it is possible to set request data on the req object, however the difficulty is that in an error triggered by that req/res handler (in a future tick on the event loop) there is no reference back to req – which is why the information is attached to the current domain, which is available (except when it isn't 😞 ).

I could have misunderstood your suggestion however! If you do see a way of doing this, if you could sketch it out in a gist or something, that'd be great!

Closing this off as unfortunately I don't see anything we can do at present.

from bugsnag-node.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.