Bring a large pot of lightly salted water to a boil. Add pasta and cook for 8 to 10 minutes or until al dente; drain.
Heat olive oil in a large frypan over medium heat. Saute onion until tender and translucent. Stir in garlic and butter and saute until garlic is soft and fragrant, about 1 minute. Dissolve flour in milk then stir in. Season with salt and pepper and simmer 4 minutes, stirring constantly.
Add cheese and stir until melted. Stir in pesto. Add prawns, mushrooms and tomatoes. Cook 4 minutes, or until heated through. Toss with pasta until evenly coated.