Ingredients

3 tablespoons unsalted butter 

1/4 cup finely chopped onion 

1/4 cup all-purpose flour 

1/2 teaspoon coarse salt 

4 cups whole milk 

Preparation

In a medium saucepan, melt butter over medium. Add onion and cook until softened, about 6 minutes. Add flour and salt; cook, stirring frequently, until mixture is pale golden, has a slightly nutty aroma, and is the texture of cooked oatmeal, about 5 minutes.

Whisking constantly, pour in 2 cups milk; add 2 more cups milk and whisk until smooth. Cook mixture, stirring constantly along the bottom of pan, until boiling, about 7 minutes.

Reduce heat to low. Simmer gently, stirring occasionally, until sauce thickens and does not feel grainy when a very small amount is rubbed between two fingers, about 10 minutes.