I did notice you were fighting some recursion issues, which tends to make life more interesting.
trap "function_that_can_fail()" ERR
As you can see, if the function called by the trap will fail the trap starts again. So recursion is not allowed.
What about trap in trap? It might happen: if the exit handler fails or the error handle exit the other trap starts.
Quite interesting job...
I have developed 5 patches that let me use the same syntax both in bash and in ash to manage the errors.
No dirty tricks anymore! :-)
I hope you will apply. Obviously, I submitted to busybox m-list, also.