whole_func_string: function (paths) {
      return new Promise((resolve, reject) => {
  
        let transaction = this.db.transaction(['nodes'], 'readonly');
        let nodes = transaction.objectStore('nodes');
        let retrievedNodes = {};
  
        this.getsRunning++;
  
        paths.map(function (path) {
          nodes.get(path).onsuccess = function (evt) {
            retrievedNodes[path] = evt.target.result;
          };
        });
  
        transaction.oncomplete = function () {
          resolve(retrievedNodes);
          this.getsRunning--;
        }.bind(this);
  
        transaction.onerror = transaction.onabort = function () {
          reject('get transaction error/abort');
          this.getsRunning--;
        }.bind(this);
  
      });
    }
func_code_string: function (paths) {
      return new Promise((resolve, reject) => {
  
        let transaction = this.db.transaction(['nodes'], 'readonly');
        let nodes = transaction.objectStore('nodes');
        let retrievedNodes = {};
  
        this.getsRunning++;
  
        paths.map(function (path) {
          nodes.get(path).onsuccess = function (evt) {
            retrievedNodes[path] = evt.target.result;
          };
        });
  
        transaction.oncomplete = function () {
          resolve(retrievedNodes);
          this.getsRunning--;
        }.bind(this);
  
        transaction.onerror = transaction.onabort = function () {
          reject('get transaction error/abort');
          this.getsRunning--;
        }.bind(this);
  
      });
    }
func_documentation_string: TODO: Document