次のコードが、mzschemeで、末尾再帰になっていないようなんですが、理由が分かる方がいらっしゃれば、教えてください。

(define (search-current-page-dump port filer map)
(let loop ([data (begin
(regexp-match #rx"</siteinfo>" port)
port)]
[list '()])
(let ([page (with-handlers ([exn:xml? (lambda (exn) #f)])
(read-xml/element data))])
(if (not page)
list
(if (filer page)
(loop data (cons (map page) list))
(loop data list))))))