diff --git a/src/bloodhound/bloodhound.js b/src/bloodhound/bloodhound.js
index <HASH>..<HASH> 100644
--- a/src/bloodhound/bloodhound.js
+++ b/src/bloodhound/bloodhound.js
@@ -138,6 +138,10 @@ var Bloodhound = window.Bloodhound = (function() {
         this._loadPrefetch(this.prefetch) : $.Deferred().resolve();
 
       // make sure local is added to the index after prefetch
+      if (_.isFunction(this.local)) {
+        this.local = this.local.call(null);
+      }
+
       this.local && deferred.done(addLocalToIndex);
 
       this.transport = this.remote ? new Transport(this.remote) : null;
diff --git a/src/bloodhound/options_parser.js b/src/bloodhound/options_parser.js
index <HASH>..<HASH> 100644
--- a/src/bloodhound/options_parser.js
+++ b/src/bloodhound/options_parser.js
@@ -13,13 +13,7 @@ var oParser = (function() {
   };
 
   function getLocal(o) {
-    var local =  o.local || null;
-
-    if (_.isFunction(local)) {
-        local = local.call(null);
-    }
-
-    return local;
+    return o.local || null;
   }
 
   function getPrefetch(o) {
execute local during the initialization() phase, not in the constructor. this allows me to pass a function into local which references a variable that is filled with data before i do the initialization.