Method:
Melt butter in a large pot over medium-high heat. Add onion, salt and pepper and cook, stirring occasionally, until golden brown, 6 to 8 minutes. Add cauliflower and 1 cup of the milk, reduce heat to medium-low, cover and simmer until cauliflower is very tender, about 25 minutes. Carefully transfer to a food processor and purée until smooth; set aside.
Bring a large pot of salted water to a boil, add macaroni and cook until al dente, about 10 minutes; drain well and return empty pot to the stove. Whisk flour and remaining 2 cups milk together in the pot and bring to a simmer over medium heat, whisking constantly. Reduce heat to medium-low and simmer just until thickened, about 2 minutes. Remove pot from the heat and add cheese a handful at a time, gently stirring until melted. Fold in the puréed cauliflower mixture, then stir in the macaroni and salt and pepper to taste. Serve immediately.