throw Object.assign(
new Error(myMessage),
{ code: 402 }
);
Throw a regular error and extend it with custom fields.
You could also write a reusable error class for that:
class CodeError extends Error {
constructor(message, code) {
super(message);
this.code = code;
}
}
throw new CodeError(myMessage, 404);
That way, you can distinguish the errors easily on catching:
} catch(error) {
if(error instanceof CodeError) {
console.log(error.code);
} else {
//...
}
}