Why cannot use Provider X in Provider Y , and provider Y in Provider X?

Why I cannot use Provider X in Provider Y , and provider Y in Provider X ?

Provider X needs data from Provider Y = OK

But Provider Y also needs data from provider X = ERROR.

While it is theoretically possible to do this, it’s quite frequently a symptom of a design flaw. Can you think of a way to eliminate this need? What do X and Y do?