Heat milk over medium-low heat until steaming (not boiling). Small bubbles should form around the edges. Remove from heat.
Whisk eggs, sugar, and salt until smooth and slightly pale.
Slowly whisk a small amount of hot milk into the eggs. Repeat once more to temper the eggs and prevent scrambling.
Return mixture to saucepan. Cook on low heat, stirring constantly without boiling until slightly thickened, coats back of spoon, and reaches about 170–175°F (77–80°C).
Remove from heat. Stir in vanilla and spices if using. Strain for extra smooth texture if desired.
Serve warm or chilled. Texture should be pourable, not thick like pudding.
