I don't know what the problem is (hard to tell with XS modules, good luck, and who knows, sometimes making a seemingly innocuous change like the one below can seem to mysteriously 'fix' the problem), but I would write it as:
$DT = eval { DateTime->new( year => $year, time_zone => $tz ) };
return unless $DT;
Don't depend on $@ to signal an exception.