• Have you tried calling the proc recursively in the catch block with a parameter indicating the progress?