This is one of those recipes that can definitely be described as ridiculous, where ridiculous means so decadent, delicious, and divine that it almost renders the person eating it speechless. A little goes a long way with this one. Invite lots of guests... preferably guests you really, really like!
Drizzle the mushrooms with olive oil, and then sprinkle them with salt and pepper. Roast in the oven until deep golden brown, 20 to 25 minutes. Set aside. Try not to eat them before the macaroni's done. Turn down the heat to 350 degrees F.
Next, fry the thick slices of bacon until chewy, but not yet crisp. Chop up the bacon into bite-size bits. Set aside. Try not to eat them before the macaroni's done.
In a large skillet over medium-low heat, saute the onions in 1 tablespoon of the butter, stirring occasionally, until golden brown, about 15 minutes. Set aside. Try not to... oh, never mind.
Cook the macaroni until just undercooked. Set aside.
To make the sauce, melt the remaining 4 tablespoons butter in a large pot over medium heat. Sprinkle in the flour, whisking to combine. Let the roux cook for a minute or so, whisking constantly. Then pour in the milk, whisking constantly. Cook the white sauce until thick and bubbly, 3 to 5 minutes. Next, add the half-and-half, 1 teaspoon salt and 1/2 teaspoon pepper.
Spoon some of the hot white sauce into the beaten eggs to temper them, stirring with a fork to incorporate the mixture without cooking the eggs. Pour the tempered eggs into the white sauce, stirring constantly as you add them. Add the fontina, gruyere, Parmesan and goat cheeses. Stir until the cheese all melts. Add the cooked macaroni and stir to coat. Splash in a little milk or hot water if needed for thinning.
Butter a 9- by 13-inch baking pan. Lay on half the onions, half the macaroni, half the mushrooms, half the gorgonzola and half the bacon. Repeat the layers, ending with the bacon. Bake until bubbly and hot, 20 to 25 minutes.
This is the stuff that dreams - and love handles - are made of.
Substitute diced ham or pancetta for the bacon. Use different cheese to your liking. Serve with steak or chicken as a side dish, or with a green salad as a main dish.