# Source: errors.js

    /** @module */

    export class ConnectorError extends Error {
        constructor(statusCode, message) {
            super(message)
            this.constructor = ConnectorError
            this.__proto__ = ConnectorError.prototype
            this.message = message
            this.statusCode = statusCode
        }

        toString() {
            return `ConnectorError ${this.statusCode}: ${this.message}`
        }
    }

    /**
     * The user supplied invalid arguments to a function/method.
     * Usually an error in code.
     */
    export class InvalidArgumentError extends ConnectorError {
        constructor(msg) {
            super(400, msg)
            this.constructor = InvalidArgumentError
            this.__proto__ = InvalidArgumentError.prototype
        }
    }

    /**
     * The server returned an error response.
     */
    export class ServerError extends ConnectorError {
        constructor(msg) {
            super(500, msg)
            this.constructor = ServerError
            this.__proto__ = ServerError.prototype
        }
    }

    /**
     * The server returned a forbidden response.
     */
    export class ForbiddenError extends ConnectorError {
        constructor(msg) {
            super(403, msg)
            this.constructor = ForbiddenError
            this.__proto__ = ForbiddenError.prototype
        }
    }

    /**
     * The server returned a not found response.
     */
    export class NotFoundError extends ConnectorError {
        constructor(msg) {
            super(404, msg)
            this.constructor = NotFoundError
            this.__proto__ = NotFoundError.prototype
        }
    }

    /**
     * The called method is not implemented or supported on a backend.
     */
    export class UnsupportedError extends ConnectorError {
        constructor(msg) {
            super(500, msg)
            this.constructor = UnsupportedError
            this.__proto__ = UnsupportedError.prototype
        }
    }

    /**
     * A request was rejected because the user is not authenticated.
     *
     * In screen-scraping APIs this may be different from a "Forbidden"
     * response - eg. a redirect to a login page might trigger the error.
     */
    export class NotAuthenticatedError extends ConnectorError {
        constructor(msg) {
            super(401, msg)
            this.constructor = NotAuthenticatedError
            this.__proto__ = NotAuthenticatedError.prototype
        }
    }