diff --git a/services/real-time/app/js/Errors.js b/services/real-time/app/js/Errors.js index bdda1b4c21..06bf33cf5d 100644 --- a/services/real-time/app/js/Errors.js +++ b/services/real-time/app/js/Errors.js @@ -1,8 +1,8 @@ -class CodedError extends Error { +const OError = require('@overleaf/o-error') + +class CodedError extends OError { constructor(message, code) { - super(message) - this.name = this.constructor.name - this.code = code + super(message, { code }) } } diff --git a/services/real-time/app/js/Router.js b/services/real-time/app/js/Router.js index ae10d12e2b..87c1991d4c 100644 --- a/services/real-time/app/js/Router.js +++ b/services/real-time/app/js/Router.js @@ -33,8 +33,8 @@ module.exports = Router = { attrs.client_id = client.id attrs.err = error if (error.name === 'CodedError') { - logger.warn(attrs, error.message, { code: error.code }) - const serializedError = { message: error.message, code: error.code } + logger.warn(attrs, error.message) + const serializedError = { message: error.message, code: error.info.code } callback(serializedError) } else if (error.message === 'unexpected arguments') { // the payload might be very large, put it on level info diff --git a/services/real-time/package.json b/services/real-time/package.json index 4a7acfc1cd..0fab05972f 100644 --- a/services/real-time/package.json +++ b/services/real-time/package.json @@ -19,6 +19,7 @@ "format:fix": "node_modules/.bin/prettier-eslint $PWD'/**/*.js' --write" }, "dependencies": { + "@overleaf/o-error": "^3.0.0", "async": "^0.9.0", "base64id": "0.1.0", "basic-auth-connect": "^1.0.0", diff --git a/services/real-time/test/unit/js/WebApiManagerTests.js b/services/real-time/test/unit/js/WebApiManagerTests.js index 2d792b563b..52c6da137a 100644 --- a/services/real-time/test/unit/js/WebApiManagerTests.js +++ b/services/real-time/test/unit/js/WebApiManagerTests.js @@ -152,7 +152,9 @@ describe('WebApiManager', function () { .calledWith( sinon.match({ message: 'rate-limit hit when joining project', - code: 'TooManyRequests' + info: { + code: 'TooManyRequests' + } }) ) .should.equal(true)