Como requer trabalho com novo operador em node.js?

Vamos ter um arquivo.js com este código:

module.exports.func = function(txt) {
    this.a = 1;
    this.b = 2;
    console.log(txt, this);
    return this;
}

Agora temos outro arquivo JS em que fazemos o seguinte:

var r1 = new (require('./file')).func('r1');
var r2 = new require('./file').func('r2');

No caso r1, ele funciona como pretendido - r1 contém referência ao objeto recém-criado.

No caso r2, ele não funciona - o r2 obtém referência a module.exports de dentro do file.js.

A intenção era criar um novo objeto chamando o construtor func (). Claro, eu também posso fazer desta forma que é igual a r1:

var r3 = require('./file');
var r4 = new r3.func('r1');

No entanto, eu não entendo porque o r2 não se comporta da mesma maneira que o r1.

Como o parêntese extra requer ('./ file') faz diferença?