24 lines
598 B
JavaScript
24 lines
598 B
JavaScript
'use strict';
|
|
|
|
var objectToString = Object.prototype.toString;
|
|
var getPrototypeOf = Object.getPrototypeOf;
|
|
var ERROR_TYPE = '[object Error]';
|
|
|
|
module.exports = function isError(err) {
|
|
if (typeof err !== 'object') {
|
|
return false;
|
|
}
|
|
if (err instanceof Error) {
|
|
// Accept `AssertionError`s from the `assert` module that ships
|
|
// with Node.js v6.1.0, compare issue #4.
|
|
return true;
|
|
}
|
|
while (err) {
|
|
if (objectToString.call(err) === ERROR_TYPE) {
|
|
return true;
|
|
}
|
|
err = getPrototypeOf(err);
|
|
}
|
|
return false;
|
|
};
|