Я все-таки считаю, что в этом модуле следует оставить как есть, так как это не какой-то постоянный блок, имеющий внутреннее состояние, которое изредка можно менять и проверять. Это скорее служебная библиотека и предполагается активное использование чейнинга: uri.host('ex.org').port('8080').protocol('http').origin() намного приятнее чем uri.setHost('ex.org').setPort('8080').setProtocol('http').getOrigin()