code: function hasPendingPath(from, to) { // both private
  	if (from.children.size === 0) { return false; }
  	for (const _child of from.children) {
  		const child = Self.get(_child);
  		if (child.resolved) { continue; }
  		if (child === to) { return true; }
  		// the .children relation spans a directed acyclic graph
  		if (hasPendingPath(child, to)) { return true; }
  	}
  	return false;
  }
docs: The edges (u, v) with v child of u and v.resolved === false must form an acyclic graph, otherwise there would be cycles of modules that wait on each other to resolve. This function checks that inserting (from, to) wouldn't create a cycle. This test should be fairly fast because only pending children need to be checked and there are no cycles. NOTE: Even in situations where cyclic dependencies are acceptable, the child link mustn't be inserted before either of the modules is resolved.