diff --git a/src/fury.js b/src/fury.js
index <HASH>..<HASH> 100644
--- a/src/fury.js
+++ b/src/fury.js
@@ -61,12 +61,12 @@ class Fury {
     if (adapter) {
       try {
         adapter.parse({generateSourceMap, minim, source}, (err, elements) => {
-          if (err) { return done(err, elements); }
-
-          if (elements instanceof minim.BaseElement) {
-            done(null, elements);
+          if (!elements) {
+            done(err);
+          } else if (elements instanceof minim.BaseElement) {
+            done(err, elements);
           } else {
-            done(null, this.load(elements));
+            done(err, this.load(elements));
           }
         });
       } catch (err) {
diff --git a/test/fury.js b/test/fury.js
index <HASH>..<HASH> 100644
--- a/test/fury.js
+++ b/test/fury.js
@@ -278,7 +278,7 @@ describe('Parser', () => {
 
       fury.parse({source: 'dummy'}, (err, elements) => {
         assert.equal(err, expectedError);
-        assert.equal(elements, expectedElements);
+        assert.deepEqual(elements, fury.load(expectedElements));
         done();
       });
     });
Process API Elements by minim on error as well.