| 12345678910111213141516171819202122232425262728 | 
							- "use strict";
 
- // This replaces loadAs with a version that batches concurrent requests for
 
- // the same hash.
 
- module.exports = function (repo) {
 
-   var pendingReqs = {};
 
-   var loadAs = repo.loadAs;
 
-   repo.loadAs = newLoadAs;
 
-   function newLoadAs(type, hash, callback) {
 
-     if (!callback) return newLoadAs.bind(null, type, hash);
 
-     var list = pendingReqs[hash];
 
-     if (list) {
 
-       if (list.type !== type) callback(new Error("Type mismatch"));
 
-       else list.push(callback);
 
-       return;
 
-     }
 
-     list = pendingReqs[hash] = [callback];
 
-     list.type = type;
 
-     loadAs.call(repo, type, hash, function () {
 
-       delete pendingReqs[hash];
 
-       for (var i = 0, l = list.length; i < l; i++) {
 
-         list[i].apply(this, arguments);
 
-       }
 
-     });
 
-   }
 
- };
 
 
  |