This is because this version of or evaluates all of its arguments (since it is a function), and the standard scheme is or (which is not a function, but a special syntax). Try running (or #t (exit)) on the REPL schema, and then try to do the same with your or function.
The behavior of the standard or sometimes called short-circuited : it evaluates only those arguments that it needs. This is very common for the binary logical operator ( or and and ) in all programming languages. The fact that or looks like a function call is a sign of Scheme / Lisp syntax, but it looks cheated.
source share