Cook the onion in 1 tablespoon butter with 1/4 teaspoon salt over medium-low heat for 35 minutes until deep brown.
Move the onions to a plate, raise the heat to medium-high and cook the mushrooms in 1 tablespoon butter until browned and dry.
Shape two thin oval patties, season with remaining salt and pepper and cook for 2 to 3 minutes per side to 160°F.
Layer Swiss, beef, onions, mushrooms and Swiss between rye slices and butter the outsides.
Griddle over medium-low heat until crisp and melted, 3 to 4 minutes per side.