Melt the butter in a large saucepan over a low heat then add the shallots, cooking very gently for about 15 minutes until really soft but not coloured. Add the chilli and stir, cooking another minute. Stir through the flour, blending it well into the buttery shallots.
Tip in the macaroni and stir well then pour in the milk and water. Season well with salt and pepper and stir through the mustard if you are using. Bring up to the boil then reduce the heat to a steady simmer. Cook for about 12-15 minutes, stirring often (just like making a risotto) until the pasta is tender and the sauce thickened. It will still be a little liquid at this stage but will thicken with resting. If it seems a little dry add a splash of extra water.
Turn off the heat and allow the macaroni to rest and cool for 5 minutes. Scatter over the cheese, stirring until its melted and serve immediately.
Resting the pasta before stirring through the cheese is an important step so don’t be tempted to skip it. If you add cheese to the too hot sauce you run the risk of it turning a little granular, which won’t effect the taste of you mac and cheese just the texture.