4 tablespoons butter (two for cooking the onion, and two to make the roux)
2 tablespoons flour
1 cup milk
salt and pepper
3 tablespoons heavy cream
Cook the onions in 2 tablespoons butter until they are very soft (about 12 minutes). They should not brown.
In a saucepan, melt the other 2 tablespoons of butter and incorporate the flour, stirring over low heat for two minutes.
Gradually whisk in the milk, blending well after each addition. Cook the sauce over low to medium heat until it thickens and comes just to a boil. Remove from heat and stir in the cooked onions and heavy cream.