docs: function loadObject(dbProject, nodeHash) {
      var deferred = Q.defer(),
          node;
  
      dbProject.loadObject(nodeHash)
          .then(function (node_) {
              var shardLoads = [],
                  shardId;
              node = node_;
  
              if (node && node.ovr && node.ovr.sharded === true) {
                  for (shardId in node.ovr) {
                      if (REGEXP.DB_HASH.test(node.ovr[shardId]) === true) {
                          shardLoads.push(dbProject.loadObject(node.ovr[shardId]));
                      }
                  }
                  return Q.allSettled(shardLoads);
              } else {
                  deferred.resolve(node);
                  return;
              }
          })
          .then(function (overlayShardResults) {
              var i,
                  response = {
                      multipleObjects: true,
                      objects: {}
                  };
              response.objects[nodeHash] = node;
  
              for (i = 0; i < overlayShardResults.length; i += 1) {
                  if (overlayShardResults[i].state === 'rejected') {
                      throw new Error('Loading overlay shard of node [' + nodeHash + '] failed');
                  } else if (overlayShardResults[i].value._id) {
                      response.objects[overlayShardResults[i].value._id] = overlayShardResults[i].value;
                  }
              }
  
              deferred.resolve(response);
          })
          .catch(deferred.reject);
  
      return deferred.promise;
  }