It's worse than that actually, `set -e`/"errexit" is disabled for function calls in ifs. Meaning this:
set -e
fn() {
false
echo "didn't exit"
}
if fn; then
echo "fn() succeeded"
fi
will output didn't exit
fn() succeeded