diff --git a/lib/primary.js b/lib/primary.js
index 55861ece63a6614d02107bf4b4927705d3031e83..a654379e778bd30268ba372732b417348385dce7 100644
--- a/lib/primary.js
+++ b/lib/primary.js
@@ -28,7 +28,13 @@ var g_shim_cache = {};
 
 // This becomes async
 function parseWellKnownBody(body, domain, delegates, cb) {
-  var v = JSON.parse(body);
+  try {
+    var v = JSON.parse(body);
+  } catch(e) {
+    return process.nextTick(function() {
+      if (cb) cb("malformed declaration of support for '" + domain + "': " + e.toString());
+    });
+  }
   const want = [ 'public-key', 'authentication', 'provisioning' ];
 
   var got = [];