Wipe the leg of lamb with a damp cloth. Place it in a stainless-steel, ceramic or enamelware container.
Mix the wine with the onions, garlic, peppercorns, juniper berries, 2 teaspoons salt, carrots, parsley, bay leaves, mint and half of the thyme. Pour the mixture over the lamb. Let the lamb marinate in the refrigerator for two days. Turn it occasionally in the marinade.
Preheat oven to hot (450°F.).
Remove the lamb from the marinade and dry it well. Reserve the marinade. Place the lamb on a rack in a roasting pan and rub it with the oil. Sprinkle with additional salt and pepper.
Roast the lamb for fifteen minutes, then reduce the oven heat to moderate (350°F.), and continue to roast for fifteen minutes to the pound, or longer if well-done meat is desired. Turn the lamb occasionally as it cooks.
Strain the marinade and place it in a saucepan. Cook it over high heat until it is reduced nearly, but not quite, by half.
Cook the shallots in the butter until they start to turn golden, then add one cup of the hot marinade. Add the remaining ingredients and simmer for five to ten minutes. Season with additional salt and pepper, if necessary, and serve hot with the lamb.