Combine in a small saucepan over very low heat, the milk, onion (whole), bay leaf, allspice, and nutmeg.
Simmer gently for 15 minutes, uncovered, to infuse flavors into the milk.
Discard the onion, bay leaf, and allspice.
Meanwhile, melt in a medium, heavy saucepan over low heat the butter.
Stir in the flour, cook uncovered, stirring occasionally with a wooden spoon or spatula, over medium-low heat until the roux is just fragrant but not darkened, 2 to 3 minutes.
Remove from the heat and let cool slightly. Slowly whisk in the warm milk and return the saucepan to the heat.
Bring the sauce slowly to a simmer, whisking to prevent lumps, and cook, stirring often and skimming any skin that forms on the surface, over low heat without boiling, until it reaches the consistency of thick cream soup, 8 to 10 minutes.