Bash assumes that the entire process group received the signal, so it will wait for the currently executing command to finish to determine what to do (more info). The trap will not run until the command has finished.
If you don't want to wait for the command to finish, you can instead use
trap 'kill $!' TERM
job &
wait $!
wait
will exit immediately when the shell receives SIGTERM, causing your trap to run at once.