Jquery prometen esperar hasta el final del ajax.

Estoy obteniendo valores predefinidos, que debo insertar en dos selecciones:

<div id="wrapper">
    <select id="first">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>
    <select id="second"></select>
</div>

Opciones dentro#second&nbsp;depende del valor seleccionado en#first. Estas opciones se cargan a través de ajax:

$('#first').change( function() {
        $.ajax({
            url: "giveMeValues.phpOrWhatever"
        }).done(function() {
            // just simulating data from ajax call
            $('#second').append(
                '<option value="a">a</option>'+
                '<option value="b">b</option>'+
                '<option value="c">c</option>'
            );
        });
    });

El problema es que puedo establecer el valor de#second después&nbsp;Se cargarán los datos de ajax. Por lo tanto, el siguiente código no funcionará:

$('#first').val('2').change();
$('#second').val('b').change();

Así que traté de usar.promise()&nbsp;esperar hasta que llame ajax dentrochange&nbsp;El manejador se completará:

$('#first').val('2').change();
    $('#wrapper').promise().then( function() {
        $('#second').val('b');
        console.log('setting value...');
    });

Pero no funciona. Mi pregunta es: ¿cómo puedo esperar al final de la llamada ajax, y luego configurar#second&nbsp;¿valor?

Aquí tienes el violín para este problema:http://jsfiddle.net/W2nVd/

Gracias por tu tiempo.