Update call properties even if exceptions are thrown (fixes #260)

This patch restructures the spy invoke method to ensure it always tracks call properties, rather than exiting early if the spied method throws an exception.