title: Unexpected call to method or property access. Only in IE8
body: <p>The following error occurs only in <code>IE8</code>...Works in <code>Chrome</code> and <code>Firefox</code> can't test IE9 as I have recently downgraded for testing purposes.</p>
  
  <blockquote>
    <p>Unexpected call to method or property access.</p>
  </blockquote>
  
  <h2>Call Stack</h2>
  
  <p><strong>Relevant Code marked with <em>\\Call occurs here</em></strong></p>
  
  <p><em>Debug values from IE Debugger...:</em><br/>
  _frames = object/function<br/>
  callback = object/function<br/>
  callbackTarget = object/function<br/>
  callbackArg = undefined<br/></p>
  
  <pre><code>ko.dependencyDetection = (function () {
      var _frames = [];
  
      return {
          begin: function (callback) {
              _frames.push({ callback: callback, distinctDependencies:[] });
          },
  
          end: function () {
              _frames.pop();
          },
  
          registerDependency: function (subscribable) {
              if (!ko.isSubscribable(subscribable))
                  throw new Error("Only subscribable things can act as dependencies");
              if (_frames.length &gt; 0) {
                  var topFrame = _frames[_frames.length - 1];
                  if (!topFrame || ko.utils.arrayIndexOf(topFrame.distinctDependencies, subscribable) &gt;= 0)
                      return;
                  topFrame.distinctDependencies.push(subscribable);
                  topFrame.callback(subscribable);
              }
          },
  
          ignore: function(callback, callbackTarget, callbackArgs) {
              try {
                  _frames.push(null);
                  return callback.apply(callbackTarget, callbackArgs || []);
              }
              //Call occurs here
              //Error occurs here since there isn't a catch and the try is failing.
              finally {
                  _frames.pop();
              }
          }
      };
  })();
  </code></pre>
  
  <p><strong>Called From:</strong></p>
  
  <pre><code>"notifySubscribers": function (valueToNotify, event) {
      event = event || defaultEvent;
      if (this._subscriptions[event]) {
          //Call occurs here
          ko.dependencyDetection.ignore(function() {
              ko.utils.arrayForEach(this._subscriptions[event].slice(0), function (subscription) {
                  // In case a subscription was disposed during the arrayForEach cycle, check
                  // for isDisposed on each subscription before invoking its callback
                  if (subscription &amp;&amp; (subscription.isDisposed !== true))
                      subscription.callback(valueToNotify);
              });
          }, this);
      }
  },
  </code></pre>
  
  <p><strong>Called From:</strong></p>
  
  <pre><code>ko.observable = function (initialValue) {
      var _latestValue = initialValue;
  
      function observable() {
          if (arguments.length &gt; 0) {
              // Write
  
              // Ignore writes if the value hasn't changed
              if ((!observable['equalityComparer']) || !observable['equalityComparer'](_latestValue, arguments[0])) {
                  observable.valueWillMutate();
                  _latestValue = arguments[0];
                  if (DEBUG) observable._latestValue = _latestValue;
                  observable.valueHasMutated();
              }
              return this; // Permits chained assignments
          }
          else {
              // Read
              ko.dependencyDetection.registerDependency(observable); // The caller only needs to be notified of changes if they did a "read" operation
              return _latestValue;
          }
      }
      if (DEBUG) observable._latestValue = _latestValue;
      ko.subscribable.call(observable);
      observable.peek = function() { return _latestValue };
      //call occurs here
      observable.valueHasMutated = function () { observable["notifySubscribers"](_latestValue); }
      observable.valueWillMutate = function () { observable["notifySubscribers"](_latestValue, "beforeChange"); }
      ko.utils.extend(observable, ko.observable['fn']);
  
      ko.exportProperty(observable, 'peek', observable.peek);
      ko.exportProperty(observable, "valueHasMutated", observable.valueHasMutated);
      ko.exportProperty(observable, "valueWillMutate", observable.valueWillMutate);
  
      return observable;
  }
  </code></pre>
  
  <p><strong>Called From:</strong></p>
  
  <pre><code>ko.observable = function (initialValue) {
      var _latestValue = initialValue;
  
      function observable() {
          if (arguments.length &gt; 0) {
              // Write
  
              // Ignore writes if the value hasn't changed
              if ((!observable['equalityComparer']) || !observable['equalityComparer'](_latestValue, arguments[0])) {
                  observable.valueWillMutate();
                  _latestValue = arguments[0];
                  if (DEBUG) observable._latestValue = _latestValue;
                  //Call occurs here
                  observable.valueHasMutated();
              }
              return this; // Permits chained assignments
          }
          else {
              // Read
              ko.dependencyDetection.registerDependency(observable); // The caller only needs to be notified of changes if they did a "read" operation
              return _latestValue;
          }
      }
      if (DEBUG) observable._latestValue = _latestValue;
      ko.subscribable.call(observable);
      observable.peek = function() { return _latestValue };
      observable.valueHasMutated = function () { observable["notifySubscribers"](_latestValue); }
      observable.valueWillMutate = function () { observable["notifySubscribers"](_latestValue, "beforeChange"); }
      ko.utils.extend(observable, ko.observable['fn']);
  
      ko.exportProperty(observable, 'peek', observable.peek);
      ko.exportProperty(observable, "valueHasMutated", observable.valueHasMutated);
      ko.exportProperty(observable, "valueWillMutate", observable.valueWillMutate);
  
      return observable;
  }
  </code></pre>
  
  <p><strong>Called From:</strong></p>
  
  <pre><code>self.fraudQueue(msg.d);
  </code></pre>
  
  <p><strong>ViewModel</strong></p>
  
  <pre><code>function FraudQueueViewModel(runDate, analyst, fraudOid, runNumber, processed, parameter) {
      var self = this;
      self.fraudQueue = ko.observableArray();
      \\...
  </code></pre>
  
  <p><strong>msg.d</strong></p>
  
  <p>Can't share true <code>msg.d</code> but is validated as valid <code>JSON</code> and <code>JS object</code>, and is an <code>array</code>.</p>
  
  <h2>UPDATE 1</h2>
  
  <p>Error appears to be on an internal array of <code>msg.d</code>...<code>msg.d</code> contains 18 internal <code>arrays</code> of <code>objects</code>, some of which contain another internal <code>array</code>.</p>
  
  <p>I created this <a href="http://jsfiddle.net/abc123/CWCuz/1/show" rel="nofollow">jsFiddle</a> to demonstrate the issue but can't even get IE8 to open <a href="http://jsfiddle.net" rel="nofollow">jsFiddle</a>.</p>