diff --git a/harness/assert.js b/harness/assert.js
index 97d585fa9254c4f0db3fb48207c40857011e1eab..1cf2c9a48947ab6a552357cfc0dd43224867794d 100644
--- a/harness/assert.js
+++ b/harness/assert.js
@@ -52,8 +52,9 @@ assert.notSameValue = function (actual, unexpected, message) {
 };
 
 assert.throws = function (expectedErrorConstructor, func, message) {
-    if (func === undefined) {
-        $ERROR('assert.throws requires two arguments: the error constructor and a function to run');
+    if (typeof func !== "function") {
+        $ERROR('assert.throws requires two arguments: the error constructor ' +
+            'and a function to run');
         return;
     }
     if (message === undefined) {
diff --git a/test/harness/assert-throws-null-fn.js b/test/harness/assert-throws-null-fn.js
new file mode 100644
index 0000000000000000000000000000000000000000..741751498a20e5b361e44dd1f578c4277fc223d1
--- /dev/null
+++ b/test/harness/assert-throws-null-fn.js
@@ -0,0 +1,61 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Fails if second arg is not a function
+---*/
+
+var threw = false;
+
+try {
+  assert.throws(TypeError, null);
+} catch(err) {
+  threw = true;
+  if (err.constructor !== Test262Error) {
+    $ERROR(
+      'Expected a Test262Error, but a "' + err.constructor.name +
+      '" was thrown.'
+    );
+  }
+}
+
+if (threw === false) {
+  $ERROR('Expected a Test262Error, but no error was thrown.');
+}
+
+threw = false;
+
+try {
+  assert.throws(TypeError, {});
+} catch(err) {
+  threw = true;
+  if (err.constructor !== Test262Error) {
+    $ERROR(
+      'Expected a Test262Error, but a "' + err.constructor.name +
+      '" was thrown.'
+    );
+  }
+}
+
+if (threw === false) {
+  $ERROR('Expected a Test262Error, but no error was thrown.');
+}
+
+threw = false;
+
+try {
+  assert.throws(TypeError, "");
+} catch(err) {
+  threw = true;
+  if (err.constructor !== Test262Error) {
+    $ERROR(
+      'Expected a Test262Error, but a "' + err.constructor.name +
+      '" was thrown.'
+    );
+  }
+}
+
+if (threw === false) {
+  $ERROR('Expected a Test262Error, but no error was thrown.');
+}