launch: function fl_launch() {
  var self = this;
  var lock = navigator.mozSettings.createLock();
  var req = lock.get('ftu.manifestURL');
  req.onsuccess = function() {
    var manifestURL = this.result['ftu.manifestURL'];
    if (!manifestURL) {
      self.skip();
      return;
    }

    var ftu = Applications.getByManifestURL(manifestURL);
    if (ftu) {
     self.skip();
     return;
    }

    self._origin = ftu.origin + ftu.manifest.entry_points['ftu'].launch_path;
    self._isRunningFirstTime = true;

    ftu.launch('ftu');
  };

  req.onerror = function() {
    self.skip();
  };
};


I don't understand why there is some variables this._ftu and this._ftuManifestURL since they seems used only in this function.

Also let's rename _ftuURL -> _origin since that match the name of the method that expose it.