If an exception occurs in Atom, any subsequent interaction is fairly suspect because the code path in which the previous exception occurred didn't terminate cleanly, potentially leaving us in an invalid state. It's important that we know whether a given exception occurred after some other exception to ensure we focus on the root cause of an issue rather than random downstream consequences.
This PR adds the messages associated with previous errors and assertion failures to the metadata of every error. This should occur as a tab in bug snag containing a list. I'm not adding the full stack traces because I'm worried about bugsnag rejecting our metadata for being too large. This should at least give us a sense of what's going on however.
This PR also refactors reporter to be a proper class rather than a bunch of free functions so it's easier to test.
If an exception occurs in Atom, any subsequent interaction is fairly suspect because the code path in which the previous exception occurred didn't terminate cleanly, potentially leaving us in an invalid state. It's important that we know whether a given exception occurred after some other exception to ensure we focus on the root cause of an issue rather than random downstream consequences.
This PR adds the messages associated with previous errors and assertion failures to the metadata of every error. This should occur as a tab in bug snag containing a list. I'm not adding the full stack traces because I'm worried about bugsnag rejecting our metadata for being too large. This should at least give us a sense of what's going on however.
This PR also refactors reporter to be a proper class rather than a bunch of free functions so it's easier to test.
/cc @ungb @maxbrunsfeld