Set a large pot over medium-high heat. Once hot, add the bacon and cook, stirring often, until crispy, about 8 to 10 minutes. Using a slotted spoon, transfer the bacon onto a plate lined with paper towels.
Drain off all but 2 tablespoons of the grease from the pot. Add in the sliced onions and season with a pinch of salt and pepper. Cook over moderate heat, stirring often, until deeply golden brown and caramelized, about 15 to 20 minutes. Stir in the mushrooms and cook until browned, another 4 to 5 minutes. Transfer the onions and mushrooms onto a plate and set aside.
Meanwhile, bring a large pot of cold water to a boil. Season with salt and add in the pasta. Cook according to the package directions, until al dente.
Add the butter to the pot, once melted whisk in the flour, cooking for about 30 seconds. Slowly whisk in the milk and cook until thickened. Season with a bit of salt and pepper, garlic powder, onion powder, mustard powder and cayenne. Lower the flame and stir in the cheeses until melted through. Add in the drained pasta, bacon, onions, mushrooms, and peas and stir until evenly incorporated. Give it a taste and adjust seasoning accordingly, adding more salt or pepper as needed. Serve immediately. Enjoy!