To the butter-sugar mixture, add the cocoa powder and mix on medium speed until combined.
Add the eggs, one at a time, mixing just long enough to combine before adding the next.
Alternate adding a quarter of the dry mixture with one-third of 1-1/2 cups of water, as well as the vanilla.
Microwave or heat in a saucepan, the milk (or cream) and butter (or oil) until hot. Add chocolate chips and stir until the chips melt and the mixture becomes smooth and creamy. Stir in the vanilla and chill in the refrigerator until it turns cold. Then wait a little longer until the consistency is thick enough to spread to frost a cake, but is still of a pouring consistency.
Replace each egg with 1 tablespoon fat such as butter and 2 tablespoons liquid from a can of white beans (my favorite flavor is cannellini/white kidney beans). For dairy-free, substitute 2-1/2 teaspoons refined coconut oil and 1/2 teaspoon water for the 1 tablespoon butter.
You see, butter contains 16% water. Therefore, you always want to replace the water with another form of fat. You do the same thing with dairy-free substitutes.
Replace butter with 84% refined coconut oil and 16% water, or 75% refined coconut oil and 25 % full-fat coconut milk. They even make organic refined coconut oil. I use BetterBody Foods. Using refined coconut oil instead of unrefined avoids coconut flavor.