try catch, only cancel on success