Place the milk and heavy cream in a medium saucepan over low heat. Stir periodically to prevent a film from forming.
If using the cocoa powder, slowly whisk it into the dairy as it warms. {Variations: Add powders and ingredients requiring steeping like coffee beans.}
While waiting for the dairy to simmer, separate the egg yolks into a large bowl.
Whisk the egg yolks until they lighten in color.
Whisk the sugar into the egg yolks, about a 1/4 cup at a time, until it is all combined.
Incorporate the simmered dairy into the egg mixture slowly while whisking continuously.
Return the mixture to the saucepan. (I like to wipe the saucepan out with a paper towel because sometimes a film or undissolved cocoa is stuck to it, but be careful as it will be very hot.)
Heat over medium low heat to 172 degrees F while stirring continuously.
Transfer the mixture to a clean container (one with a lid is preferable as it will be covered later) and let sit at room temperature until warm, about 20 minutes in our kitchen.
Stir in the vanilla extract and place uncovered in the refrigerator. {Variations: Add extracts or other heat sensitive ingredients and blend in fruit before refrigeration.}
Cover the container once condensation stops forming on the lid. (This took about an hour in our fridge.)
Once cool, 4-8 hours or overnight, churn according to your ice cream maker's instructions. Then scoop out the churned ice cream with a frozen plastic spatula into a pre-frozen container. {Variations: After churning, layer mix-ins before freezing.}