Express.js motor de plantillas personalizadas (placa)

Estoy tratando de hacer que el motor de plantillas de placas funcione con express.js. Mi intento inicial fue este:

app.register('.html', {
    compile: function (str, options) {
        var template = new plate.Template(str);
        return function(locals) {
            return template.render(locals, function(err, data) {
                return data;
            });
        }
    }
});

Veo que el problema es que template.render no devuelve nada (indefinido) pero pasa los datos a una devolución de llamada. No estoy seguro de cómo hacerlo funcionar en este caso, ya que Express espera que la función de compilación devuelva una función que devuelve directamente una plantilla renderizada cuando se llama.

Estaba pensando que tal vez pueda usar promesas para resolver este problema, pero tampoco tuve éxito allí ya que el código expreso no espera que se devuelva una promesa. No estoy demasiado al día con las promesas, así que podría estar haciéndolo mal:

app.register('.html', {
    compile: function (str, options) {
        var promise = new Promise();
        var template = new plate.Template(str);
        return function(locals) {
            template.render(locals, function(err, data) {
                promise.resolve(data);
            });
            return promise;
        }
    }
});

Aquí hay un ejemplo de una implementación personalizada que funciona. La diferencia es que la función de plantilla de plantillas de subrayado devuelve directamente la cadena representada de la siguiente manera:

app.register('.html', {
    compile: function (str, options) {
        var template = _.template(str);
        return function (locals) {
            return template(locals);
        };
    }
});

Realmente me gustaría usar plantillas de Plate ya que la etiqueta {% block%} es increíble. Cualquier ayuda es apreciada.

ocumentación de @pertinent:

Github docs de la placa

express.js app.register docs