Warm the milk in a medium saucepan over medium heat until hot, being careful not to let it boil.
In a mixing bowl, whisk the sugar and cornstarch together until well combined.
Beat the egg yolks into the sugar mixture until it becomes a pale yellow color. Blend in the orange zest, orange juice, and vanilla.
Slowly and carefully whisk the hot milk into the egg mixture to temper the eggs and create a smooth blend.
Pour the mixture back into the saucepan and cook over medium heat, whisking continuously for about 5 minutes until it thickens to a custard consistency.
Remove the saucepan from heat and whisk in the butter until it is fully incorporated.
Pour your custard into a bowl, cover with plastic wrap directly on the surface to prevent a skin from forming, and chill for at least 4 hours before serving.
Notes
Use a fine grater to zest the oranges for a more intense flavor.
Gradually whisk the hot milk into the egg mixture to prevent scrambling.
Taste your mixture before chilling; add more sugar if preferred.
Add some extra orange zest on top before serving for a pop of color and flavor.