Preheat the oven to 375° F. Prepare a 9 x 13 casserole dish with cooking spray. Place the butter in a medium saucepan, melt over medium-low heat, and cook until foaming. Add the flour and stir well with a wooden spoon for 1 to 2 minutes. Slowly pour in the milk, whisking to incorporate. Attach the bay leaf to the onion wedge using the cloves. Drop the studded onion into the milk mixture with the clove/bay leaf side down. Cook, stirring occasionally, until the mixture thickens, about 15 minutes.
Meanwhile, cook the pasta according to the package directions, but don’t salt the cooking water.
Remove the studded onion from the sauce and discard. Add the Swiss and cheddar cheeses. Stir to combine and heat the sauce until the cheese is just melted. Season with salt and cayenne. In a large mixing bowl, combine the sauce, bacon, and cooked macaroni- toss to coat. Combine the breadcrumbs and Parmesan in a small bowl.
Pour the pasta mixture into the prepared baking dish and top with the breadcrumbs and Parmesan. Bake uncovered until bubbly and golden, about 15 minutes.
Note- You can swap half the pasta for 3 cups of blanched broccoli or cauliflower.