fall-through.js 811 B

1234567891011121314151617181920212223242526
  1. var modes = require('../lib/modes');
  2. module.exports = function (local, remote) {
  3. var loadAs = local.loadAs;
  4. local.loadAs = newLoadAs;
  5. function newLoadAs(type, hash, callback) {
  6. if (!callback) return newLoadAs.bind(local. type, hash);
  7. loadAs.call(local, type, hash, function (err, body) {
  8. if (err) return callback(err);
  9. if (body === undefined) return remote.loadAs(type, hash, callback);
  10. callback(null, body);
  11. });
  12. }
  13. var readRef = local.readRef;
  14. local.readRef = newReadRef;
  15. function newReadRef(ref, callback) {
  16. if (!callback) return newReadRef.bind(local. ref);
  17. readRef.call(local, ref, function (err, body) {
  18. if (err) return callback(err);
  19. if (body === undefined) return remote.readRef(ref, callback);
  20. callback(null, body);
  21. });
  22. }
  23. };