All files / src/transports unhandledRejection.js

50% Statements 4/8
0% Branches 0/2
66.67% Functions 2/3
50% Lines 4/8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29          1x 1x 1x       1x                                  
import unhandledError from "unhandled-error";
import moment from "moment";
 
class UnhandledRejectionTransport {
  constructor(opts) {
    this.logger = opts.logger;
    this.appName = opts.appName;
    this.metric = opts.metric;
  }
 
  initialize() {
    unhandledError(
      (error, context) => {
        const errorType = context.hasOwnProperty("promise")
          ? "unhandled_promise_rejection"
          : "unhandled_error";
 
        const loggerMessage = this.logger.logMessageFormat(error.message);
 
        this.logger.log({ ...loggerMessage, ...{ level: "error" } });
        this.metric.send(loggerMessage, errorType);
      },
      { doNotCrash: true }
    );
  }
}
 
export default UnhandledRejectionTransport;