'use strict' const assert = require('assert') const util = require('util') // RedisError function RedisError (message) { Object.defineProperty(this, 'message', { value: message || '', configurable: true, writable: true }) Error.captureStackTrace(this, this.constructor) } util.inherits(RedisError, Error) Object.defineProperty(RedisError.prototype, 'name', { value: 'RedisError', configurable: true, writable: true }) // ParserError function ParserError (message, buffer, offset) { assert(buffer) assert.strictEqual(typeof offset, 'number') Object.defineProperty(this, 'message', { value: message || '', configurable: true, writable: true }) const tmp = Error.stackTraceLimit Error.stackTraceLimit = 2 Error.captureStackTrace(this, this.constructor) Error.stackTraceLimit = tmp this.offset = offset this.buffer = buffer } util.inherits(ParserError, RedisError) Object.defineProperty(ParserError.prototype, 'name', { value: 'ParserError', configurable: true, writable: true }) // ReplyError function ReplyError (message) { Object.defineProperty(this, 'message', { value: message || '', configurable: true, writable: true }) const tmp = Error.stackTraceLimit Error.stackTraceLimit = 2 Error.captureStackTrace(this, this.constructor) Error.stackTraceLimit = tmp } util.inherits(ReplyError, RedisError) Object.defineProperty(ReplyError.prototype, 'name', { value: 'ReplyError', configurable: true, writable: true }) // AbortError function AbortError (message) { Object.defineProperty(this, 'message', { value: message || '', configurable: true, writable: true }) Error.captureStackTrace(this, this.constructor) } util.inherits(AbortError, RedisError) Object.defineProperty(AbortError.prototype, 'name', { value: 'AbortError', configurable: true, writable: true }) // InterruptError function InterruptError (message) { Object.defineProperty(this, 'message', { value: message || '', configurable: true, writable: true }) Error.captureStackTrace(this, this.constructor) } util.inherits(InterruptError, AbortError) Object.defineProperty(InterruptError.prototype, 'name', { value: 'InterruptError', configurable: true, writable: true }) module.exports = { RedisError, ParserError, ReplyError, AbortError, InterruptError }