Why does DOMException constructor directly derive from Function.prototype but DOMException.prototype directly from Error.prototype?

In other words, why isn’t DOMException like AggregateError, EvalError, etc?

devtools evaluation screenshot
Both expressions evaluate to true:

Object.getPrototypeOf(DOMException) === Function.prototype
Object.getPrototypeOf(DOMException.prototype) === Error.prototype

I used to think the following generalization has no counterexamples:

If

  • X and Y are constructor functions, and
  • Y is not the Object() constructor, and
  • X.prototype has Y.prototype as its [[Prototype]] object
    Then
  • X has Y as its [[Prototype]] object

For example, the above generalization holds for the following X,Y pairs

  1. HTMLElement, Element
  2. AggregateError, Error
  3. AsyncFunction, Function
  4. Node, EventTarget
  5. Element, Node
  6. RTCError, DOMException

The only case I know of in which the generalization fails is when X = DOMException and Y = Error.

Is there a deeper reason why the DOMException constructor itself cannot have the Error constructor as its [[Prototype]]?