btw for my immediate needs i replace second delegate with value i.e. remove "lazy" from declaration and remove "()" in return
so ifThrown loose some generity ```d nothrow CommonType!(T1, T2) ifThrown(E : Throwable = Exception, T1, T2)(lazy scope T1 expression, scope T2 expression2)
... try return expression(); catch (E) return expression2; ```