Having lexicial scope it is same as -> defer fn{if(some condition) x() }() within scope.
Except 'some condition' may change, can be long, or expensive, so you likely need an extra variable.