In a saucepan, melt butter over medium heat. Stir in onion and sauté until tender.
Whisk in flour until smooth; continue stirring for 1 minute.
Slowly stir in milk. Continue stirring until thickened and bubbly.
Add cheese; stir until melted and smooth. Season with salt, pepper and nutmeg. Remove from heat. Cover and keep warm.
Fill a large saucepan halfway with water and 1 tablespoon vinegar. Bring to a simmer; crack eggs gently into water. Poach eggs until whites are set (completely coagulated and firm) and yolks begin to thicken (no longer runny, but not hard).
To serve, place a toast slice on an oven-proof plate. Top with three asparagus spears. Place two poached eggs on top of asparagus. Top each egg with a Gruyere slice. Broil 20-30 seconds just until cheese has melted. Remove from broiler; scrunch up two slices prosciutto around poached eggs. Drizzle eggs with sauce. Garnish with thyme. Serve immediately.