Added custom cancelation reason
improved exception handling