In a large stockpot over low heat, melt 2 tablespoons butter. Add onions and cook, stirring occasionally, until very soft and golden brown, about 1 hour. Add the white wine and reduce by half. Add the cream and reduce by half.
Meanwhile, in a small saucepan, add sugar and moisten with water and lemon juice. Cook until the sugar melts and becomes a light caramel color. Remove from the heat immediately. Do not allow it to overcook, or it will become bitter. Cool briefly and add the vinegar to the caramel and whisk to combine (if mixture hardens, set it over low heat to liquefy again). Set aside.
In a separate saucepan over low heat, melt the remaining butter and add the flour. Whisk for 1 to 2 minutes or until flour is absorbed but mixture is still blond-colored. Set aside.
In a separate saucepan, bring the broth to a boil. Add the flour roux to the stock and cook to combine. Puree with an immersion blender or in a food processor to smooth it to a gravy-like consistency. Add this mixture (called a veloute) to the onions after the cream is reduced. Add the sugar-vinegar mixture (called a gastrique), stirring to incorporate.
Season to taste with salt and pepper and serve. The restaurant serves the soup with grated Gruyere cheese, croutons and green onions, but it is filling enough to serve alone.
Note: To properly caramelize the onions, allow yourself about one hour. Don't rush it by using too high heat or you could burn the onions.