diff --git a/index.js b/index.js
index <HASH>..<HASH> 100644
--- a/index.js
+++ b/index.js
@@ -76,7 +76,7 @@ BaseError.prototype = Object.create(Error.prototype, {
 // -------------------------------------------------------------------
 
 function makeError (constructor, super_) {
-  if (!super_ || super_ === Error) {
+  if (super_ == null || super_ === Error) {
     super_ = BaseError
   } else if (typeof super_ !== 'function') {
     throw new TypeError('super_ should be a function')
diff --git a/index.spec.js b/index.spec.js
index <HASH>..<HASH> 100644
--- a/index.spec.js
+++ b/index.spec.js
@@ -43,6 +43,15 @@ function splitLines (str) {
 // ===================================================================
 
 describe('makeError()', function () {
+  it('throws on invalid arguments', function () {
+    expect(function () {
+      makeError(42)
+    }).to.throw(TypeError)
+    expect(function () {
+      makeError('MyError', 42)
+    }).to.throw(TypeError)
+  })
+
   it('creates a new error class', function () {
     var constructorCalled
Better UX: throws on invalid arguments.