O Node.js usa o csurf condicionalmente com o express 4

Eu tento usar o csurf em apenas algumas rotas no meu aplicativo expresso. essa é a abordagem:

var express       = require('express');
var session       = require('express-session');
var csrf          = require('csurf');

// some more stuff

var csrfExclusion = ['/myApi','/unsecure'];

var app   = express();

var conditionalCSRF = function (req, res, next) {  
  if (csrfExclusion.indexOf(req.path) !== -1){
    next();
  }
  else{
    csrf();
  }
});

app.use(conditionalCSRF);

até tentei:

var conditionalCSRF = function (req, res, next) {  
  if (csrfExclusion.indexOf(req.path) !== -1){
    next();
  }
  else{
    csrf(req, res, next);
    next();
  }
});

e

var conditionalCSRF = function (req, res, next) {  
  if (csrfExclusion.indexOf(req.path) !== -1){
    next();
  }
  else{
    csrf();
    next();
  }
});

Mas isso me dá um erro: o objeto # não possui o método 'csrfToken'

Como posso usar o csurf condicionalmente. A documentação fornece apenas informações para usá-lo em todas as rotas no aplicativo expresso com

app.use(csrf());

Mas não é isso que eu quero, quero excluir uma rota ...

gentilmente ... Martin

ATUALIZAR:

finalmente funciona. Eu fiz o seguinte:

app.use(function(req, res, next){
  if (csrfExclusion.indexOf(req.path) !== -1) {
  next();
}
  else {
  csrf()(req, res, next);
});

Isso adiciona o middleware csrf condicionalmente. Mas eu realmente acho meio estranho chamá-lo assim:

csrf()(req, res, next);

Eu ainda não entendo a sintaxe ...

questionAnswers(2)

yourAnswerToTheQuestion