Here is what you can find in the trap manual:
The KornShell uses an ERR trap that is triggered whenever set -e would cause an exit.
That means it is not triggered by set -e, but is executed in the same conditions. Adding set -e to a trap on ERR would make your script exit after executing the trap.
To remove a trap, use:
trap - [signal]