To make the filling, pour the milk into a large lidded pan and add the sliced onion and bay leaves. Season with salt and freshly ground black pepper.
Place the fish fillets in the pan and bring to a very gentle simmer, then cover and cook for two minutes.
Remove the pan from the heat and leave to stand and infuse for 20 minutes. Drain the fish through a colander into a bowl, then pour the milk into a jug.
Meanwhile, make the mash for the topping. Half fill a large saucepan with cold water. Add the potatoes and bring to the boil, then reduce the heat and simmer for 15 minutes or until the potatoes are soft.
Drain the potatoes and return them to the pan, then mash with the butter, milk and three-quarters of the grated cheese. Season to taste with salt and freshly ground black pepper.
Preheat the oven to 200C/400F/Gas 6.
To finish the filling, melt the butter in a medium saucepan and stir in the flour. Cook for a few seconds, then gradually add the infused milk, stirring constantly, and simmer over a medium heat for 3–4 minutes until the sauce is smooth and thick. Stir in the peas and season with salt and freshly ground black pepper.
Spread one third of the sauce into the base of a 1.5 litre/2¾ pint ovenproof dish. Scatter half the fish fillets over the sauce, breaking them into chunky pieces as you go and discarding the onion and bay leaves.
Arrange half the prawns on top of the fish and pour over another third of the sauce. Repeat these layers, finishing with the final third of sauce.
Spoon the topping over the fish mixture, spreading the mash to the edges with a palette knife. Fork the surface and sprinkle over the remaining cheese. Place the dish on a baking tray and bake in the centre of the oven for about 25 minutes or until the top is golden-brown and the filling is bubbling.