Three hours before you want to cook the duck, rinse it under cold running water and pat dry, inside and out, with kitchen paper.
Season the duck inside and out with salt and freshly ground black pepper. Add the thyme and rosemary sprigs to the cavity, then pour in 125ml/4fl oz of cold water, angling the duck so that the water does not spill out. Seal the cavity by tucking in the neck of the duck.
Chill the duck in the fridge for three hours. (Return to room temperature before cooking.)
When ready to cook the duck, preheat the oven to 220C/450F/Gas 8.
Suspend a wire rack over a roasting tray and place the duck onto it. Pour 375ml/12½fl oz of boiling water over the duck and into the roasting tray. Then sprinkle the whole duck with vinegar (this will make the skin crispy when cooked).
Place the onion halves on either side of the duck and lay the bacon rashers over the breast. Wipe off any excess vinegar using kitchen paper. Season the duck again with salt and freshly ground black pepper, then cover the tray with aluminium foil, sealing well at the edges.
Roast the duck in the oven for 30 minutes, then remove the foil and bacon rashers. Reserve the bacon rashers and the roasted onion halves. Set aside the duck in its roasting tray ready to roast again later.
Reduce the oven temperature to 180C/350F/Gas 5.
At this point, start the bread sauce. Pour the milk into a medium-sized saucepan, add the onion halves, cloves, peppercorns, mace (or nutmeg) and salt and heat over a medium heat, stirring well, until the milk starts to simmer. (NB: Do not allow the milk to boil.)
Continue to simmer the milk, without boiling, for 4-5 minutes, then remove the pan from the heat and set aside, covered, for one hour to allow the flavours to infuse.
When the oven temperature has reduced, return the duck to the oven and roast, uncovered, for a further hour, basting all over at 30 minute intervals with the juices from the roasting tray.
Remove the bird from the oven and set aside to rest, loosely covered, for 40 minutes. Drain the cooking juices from the roasting tray and reserve in a jug. (After a few minutes, the fat should separate from the meat juices. The duck fat can be poured or skimmed from the jug of roasting juices and used to make roast potatoes to accompany this dish – alternatively, it will keep in a sealed container for up to four weeks.)
Meanwhile, when the milk for the bread sauce has infused, add the breadcrumbs to a clean saucepan and strain the infused milk over the breadcrumbs through a fine sieve to collect the onion and spices. Stir once and set aside to soak for five minutes.
Heat the bread mixture over a medium heat, stirring regularly, for 8-10 minutes, or until the bread has absorbed most of the liquid and the mixture has thickened, then remove the pan from the heat and stir in the butter until the butter has melted and the bread sauce resembles porridge. (If the sauce is too thick add a little more milk to loosen it.)
To cook the reserved roasted onions, heat the roasting tray used to roast the duck over a medium heat, then add the onions, cut-sides down, and cook gently in the residue of the cooking juices for 2-3 minutes so that they soak up the flavours. Keep warm until ready to serve.
When the duck has rested, open the neck of the roasted duck and carefully pour any liquid inside it into the jug of meat juices. Stir until well combined and reheat just before serving (this will be the gravy).
Return the roast duck to the roasting tray and lay the bacon rashers on top of it again. Cook in the oven for a further 15 minutes, or until the skin of the duck is crisp.
To serve, carve the roast duck into thin slices and arrange on four serving plates. Place one onion half alongside each portion of duck. Crumble the bacon rashers into pieces and pile a few pieces next to the onions. Pour over the gravy. Serve with roast potatoes and steamed green vegetables.