catch errors on the callback so no payment is lost