diff --git a/src/check-types.js b/src/check-types.js
index <HASH>..<HASH> 100644
--- a/src/check-types.js
+++ b/src/check-types.js
@@ -290,7 +290,7 @@
      *
      */
     function error (data) {
-        return Object.prototype.toString.call(data) === '[object Error]';
+        return data instanceof Error || Object.prototype.toString.call(data) === '[object Error]';
     }
 
     /**
diff --git a/test/check-types.js b/test/check-types.js
index <HASH>..<HASH> 100644
--- a/test/check-types.js
+++ b/test/check-types.js
@@ -366,6 +366,15 @@
             assert.isTrue(check.error(new Error()));
         });
 
+        test('error with derived error returns true', function () {
+            function DerivedError () {
+                Error.call(this);
+            }
+            DerivedError.prototype = new Error();
+            DerivedError.prototype.constructor = DerivedError;
+            assert.isTrue(check.error(new DerivedError()));
+        });
+
         test('error with object returns false', function () {
             assert.isFalse(check.error({}));
         });
Recognise derived error objects.