This code: false || case a in a) echo $?;; esac outputs 0 when run by busybox ash. Bash outputs 1 as expected. dash has received a fix for this recently. Maybe the same solution (having eval function return their exit status) would solve the problem: https://git.kernel.org/cgit/utils/dash/dash.git/commit/?id=da534b740e628512e8e0e62729d6a2ef521e5096
Fixed in git, thanks!