

I think the use of "Closure" here is a bit misleading. It's just a "Goal" (necessarily atomic, as call/2 is used, so an "Event Handler Predicate"). There is no "code to be executed" in a context that was in existence when that code was wrapped into a manipulable object. In fact, the only execution contexts that Prolog knows are the contexts of the clause (not even of the procedure) and procedures or clauses cannot be passed around semi-evaluated, hence no Closures.
See also: https://www.swi-prolog.org/pldoc/doc_for?object=call/2