nsITaggingService のバグ?

本日の謎バグについての追加検証。
Firefox 側の問題っぽいな。
バグなのか仕様なのかはわからない。
(別スレッドで、うごかしちゃいけないのかも)
とりあえず、実証コード。

(function () {

  let useThread = 1;
  let preExec = 1;

  let taggingService = Cc["@mozilla.org/browser/tagging-service;1"]
                         .getService(Components.interfaces.nsITaggingService);
  let fff = function () {
    try {
      taggingService.getTagsForURI(makeURI('http://snca.net'), {});
      dump("getTagsForURI - OK\n");
    } catch (e) {
      dump(e + "\n");
    }
  };

  if (useThread) {
    if (preExec)
      fff();
    var workingThread = function() {};
    workingThread.prototype = {
      run: fff,
      QueryInterface: function(iid) {
        if (iid.equals(Components.interfaces.nsIRunnable) ||
            iid.equals(Components.interfaces.nsISupports)) {
                return this;
        }
        throw Components.results.NS_ERROR_NO_INTERFACE;
      }
    };
    var background = Components.classes["@mozilla.org/thread-manager;1"].getService().newThread(0);
    background.dispatch(new workingThread(), background.DISPATCH_NORMAL);
  } else {
    fff();
  }

})();
useThread preExec 結果
false false fff() は成功
true false なぜか失敗。例外発生。
true true なぜか成功。