In a large pot, pour water and boil then add salt. Put spaghetti pasta into the boiling water and cook according to package instruction or until al dente. Reserve 1 cup of pasta water before draining well (if no chicken broth is available). Set aside.
In a wide skillet/ wok over medium heat, add bacon. Cook and stir occasionally, until bacon fat gets extracted. Continue to cook until the texture becomes brown and crispy. Remove from heat and drain on paper towel. Set aside.
Sauté the garlic and onion using 1 to 2 tablespoons of the extracted bacon fat in the pan. Cook until translucent.
Add mushrooms, stir and cook until softened while stirring occasionally. Remove the mushroom mixture from the pan and set aside.
In the same skillet, add butter and heat until melted. Add flour and cook, stirring constantly, about 1 minute or until smooth and lightly brown.
Slowly pour in chicken broth/pasta broth, whisking continuously to prevent lumps from forming.
Add cream and lower the heat and bring to a simmer. Do not let it come to a boil to avoid curdling. Cook until slightly thickened, stirring continuously.
Put in parmesan cheese and season with salt and pepper. Add parsley then turn off heat.
Add the cooked pasta, bacon and mushroom mixture into the sauce. Toss until all ingredients are fully combined.
Transfer to a serving plate. Garnish with reserved bacon, parmesan cheese and parsley.
Serve while hot and enjoy!