// ĠMIT ĠLicense Ċ // Ċ // ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġ Ċ // Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġ Ċ // Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġ Ċ // Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġ Ċ // Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe Ġ Ċ // ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ // Ċ // ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ // Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ // Ċ // ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ġ Ċ // ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ġ Ċ // ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ // ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ġ Ċ // ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING Ġ Ċ // ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS Ċ // ĠIN ĠTHE ĠSOFTWARE . Ċ // Ċ // Ġ ĠPromise Extension . kt Ċ // Ġ ĠFlow Kit Ċ // Ċ // Ġ ĠCreated Ġby ĠB rian ĠHow ard Ċ // Ġ ĠCopyright ĠÂ© Ġ 2 0 2 0 ĠIn Motion ĠSoftware , ĠLLC . ĠAll Ġrights Ġreserved . Ċ // Ċ Ċ package Ġcom . in motion software . flow kit Ċ Ċ import Ġcom . in motion software . flow kit . Flow Error Ċ import Ġcom . in motion software . promise kt .* Ċ Ċ fun Ġ< T > ĠPromise < T >. back ( closure : Ġ() Ġ-> ĠT Ġ): ĠPromise < T > Ġ= ĊĠĠĠ Ġcanceled Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFlow Error . Back Ġ-> Ġclosure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFlow Error . Canceled Ġ-> Ġthrow Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ fun Ġ< T > ĠPromise < T >. cancel ( closure : Ġ() Ġ-> ĠT Ġ): ĠPromise < T > Ġ= ĊĠĠĠ Ġcanceled Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFlow Error . Back Ġ-> Ġthrow Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFlow Error . Canceled Ġ-> Ġclosure () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ fun Ġ< T > ĠPromise < T >. c anceled ( closure : Ġ( Flow Error ) Ġ-> ĠT Ġ): ĠPromise < T > Ġ= ĊĠĠĠ Ġthis . recover Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠFlow Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPromise . value ( closure ( it )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ fun Ġ< T > ĠResolver < T >. resolve ( result : ĠResult < T >) Ġ{ ĊĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġfulfill ( result . value ) ĊĠĠĠĠĠĠĠ Ġis ĠResult . Failure Ġ-> Ġreject ( result . cause ) ĊĠĠĠ Ġ} Ċ }