It appears that your code is not being reloaded while the REPL is busy because your SBCL image is single threaded. You can determine that your SBCL is single threaded by checking that :sb-thread is not present in *features*. Threaded vs unthreaded is determined when SBCL itself is compiled, so to get the behavior you desire you will need to either acquire an SBCL binary with threads enabled or compile SBCL with threads enabled.
A lack of threads can get in the way of some benefits of interactive development (as in your test, or if you want to develop a web program that has a server component running in the same image) but it still leaves some benefits open. Some handy aspects of interactive development that don't require your program to be actively "doing" anything for you to enjoy them include that you only have to reload the parts of your program that you changed, that this reloading does not cause the program to dump the data it has loaded (as a restart might), and that the REPL can be used as a handy window into your program's state and behavior.