Q.js - Uso diferido

¿Cómo obtengo el valor del texto del siguiente ejemplo?

Q.js tiene un ejemplo sobre el uso de diferido:

var deferred = Q.defer();
FS.readFile("foo.txt", "utf-8", function (error, text) {
    if (error) {
        deferred.reject(new Error(error));
    } else {
        deferred.resolve(text);
    }
});
return deferred.promise;

En este caso, se está utilizando una función asíncrona de nodo. Lo que quiero hacer es obtener el valor del texto de la promesa diferida que se devuelve. Cuando console.log (deferred.promise) obtengo esto:

{ promiseSend: [Function], valueOf: [Function] }

¿Qué estoy haciendo mal? (Como acabo de copiar / pegar el ejemplo desde aquí:https://github.com/kriskowal/q#using-deferreds) ¿O qué más debo hacer para obtener ese texto del archivo?

Soy consciente de que node.js tiene una versión síncrona de la llamada anterior, mi objetivo es entender cómo funciona el diferido con esta biblioteca.