docs: function resolveTransitiveDependencies(module, hash) {
      if (!(module instanceof Module)) {
        return Promise.reject("Unable to resolve module of type " + typeof(module));
      }
  
      var promises = [];
      for (var i in module.dependencies) {
        (function(dependencyName) {
  
          /* Ignore already resolved dependencies */
          if (hash[dependencyName]) return;
  
          /* Get a module or a promise to it and put it in the hash NOW! */
          var dependency = hash[dependencyName] = moduleOrPromise(dependencyName);
  
          /* Transitively resolve the dependency */
          promises.push(Promise.resolve(dependency).then(function(dependency) {
            hash[dependencyName] = dependency;
            return resolveTransitiveDependencies(dependency, hash);
          }));
  
        })(module.dependencies[i]);
      }
  
      return Promise.all(promises).then(function() {
        return hash;
      });
    }