diff --git a/packages/pouchdb-errors/src/index.js b/packages/pouchdb-errors/src/index.js
index bb1b29e..4b106f1 100644
--- a/packages/pouchdb-errors/src/index.js
+++ b/packages/pouchdb-errors/src/index.js
@@ -161,6 +161,33 @@
   reason: 'Provided URL is invalid'
 });
 
+var allErrors = [
+  UNAUTHORIZED,
+  MISSING_BULK_DOCS,
+  MISSING_DOC,
+  REV_CONFLICT,
+  INVALID_ID,
+  MISSING_ID,
+  RESERVED_ID,
+  NOT_OPEN,
+  UNKNOWN_ERROR,
+  BAD_ARG,
+  INVALID_REQUEST,
+  QUERY_PARSE_ERROR,
+  DOC_VALIDATION,
+  BAD_REQUEST,
+  NOT_AN_OBJECT,
+  DB_MISSING,
+  WSQ_ERROR,
+  LDB_ERROR,
+  FORBIDDEN,
+  INVALID_REV,
+  FILE_EXISTS,
+  MISSING_STUB,
+  IDB_ERROR,
+  INVALID_URL
+];
+
 function createError(error, reason, name) {
   function CustomPouchError(reason) {
     // inherit error properties from our parent error manually
@@ -189,15 +216,12 @@
 // This is for differentiating between errors with the same name and status,
 // eg, bad_request.
 var getErrorTypeByProp = function (prop, value, reason) {
-  var keys = Object.keys(allErrors).filter(function (key) {
-    var error = allErrors[key];
-    return typeof error !== 'function' && error[prop] === value;
+  var errors = allErrors.filter(function (error) {
+    return error[prop] === value;
   });
-  var key = reason && keys.filter(function (key) {
-      var error = allErrors[key];
-      return error.message === reason;
-    })[0] || keys[0];
-  return (key) ? allErrors[key] : null;
+  return reason && errors.filter(function (error) {
+    return error.message === reason;
+  })[0] || errors[0];
 };
 
 function generateErrorFromResponse(res) {
diff --git a/tests/unit/test.errors.js b/tests/unit/test.errors.js
new file mode 100644
index 0000000..f81d654
--- /dev/null
+++ b/tests/unit/test.errors.js
@@ -0,0 +1,33 @@
+
+'use strict';
+
+var should = require('chai').should();
+var PouchDB = require('../../packages/pouchdb-for-coverage');
+var clone = PouchDB.utils.clone;
+
+describe('test.clone.js', function () {
+
+  it('Clones regular objects', function () {
+    var obj1 = {foo: 'bar'};
+    var obj2 = clone(obj1);
+    obj1.baz = 'quuz';
+    should.not.exist(obj2.baz);
+  });
+
+  it('Doesn\'t clone fancy objects', function () {
+
+    function Kitty() {
+    }
+
+    Kitty.prototype.meow = function () {
+      return 'meow';
+    };
+
+    var obj1 = {kitty: new Kitty()};
+    var obj2 = clone(obj1);
+    obj1.kitty.meow().should.equal('meow');
+    obj2.kitty.meow().should.equal('meow');
+    obj1.kitty.foo = 'bar';
+    obj2.kitty.foo.should.equal('bar');
+  });
+});
