Melt butter and olive oil in a large Le Creuset enamel cast iron Dutch oven saucepan. Add the onions and carrots and cook over medium heat for 5 minutes. Add water, simmer for 15 minutes covered until the carrots are tender.
Add tomatoes, garlic, thyme, salt and pepper, saffron, and chicken stock, and bring to a boil gently. Turn down the heat and simmer for 15 minutes, covered.
Allow mixture to cool off a bit, then puree in a blender. (you may have to do it in batches)
Pour soup into a clean saucepan and simmer for 5 minutes. Remove from the heat.
Whip the egg yolks in a small bowl. Stir some of the hot mixtures into the bowl to temper the eggs, gently blend this mixture back into the soup. Stir well, do not boil or the mixture will separate. Check to season and garnish, optional, with chives, thyme or parsley chopped fine.
Slightly butter each slice of bread with butter. Over 6 slices of bread add 2 slices of cheddar cheese. Cover with the other half of the bread.
Heat over high heat a large skillet – or griddle. Add some butter and place your bread over it. Lower the heat and turn the grilled cheese over one the cheese starts to melt, and the bread turns a light golden brown. Grill the other side for a couple of minutes.