I'm using sh (dash) on Ubuntu (lucid) and the manpage has this to say about -e:
-e errexit If not interactive, exit immediately if any untested command fails.
The exit status of a command is considered to be explicitly tested
if the command is used to control an if, elif, while, or until; or
if the command is the left hand operand of an “&&” or “||” opera‐
tor.
What happens when a background command fails? And does bash behave differently in this respect?