package Ġkod ando . mob x Ċ Ċ import Ġkotlin . coroutines . experimental . Continuation Ċ import Ġkotlin . coroutines . experimental . Coroutine Context Ċ import Ġkotlin . coroutines . experimental . start Coroutine Ċ import Ġkotlin . js . Promise Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ class ĠAsync Action Property Provider < T , ĠR >( private Ġval Ġaction : ĠS uspend able Async Func < T , ĠR >) Ġ{ ĊĠ Ġoperator Ġfun Ġprovide Delegate ( this Ref : ĠAny , Ġproperty : ĠK Property < *> ): ĠReadOnly Property < Any , ĠAsync Func < T , ĠPromise < R >>> Ġ{ ĊĠĠĠ Ġval Ġaction Name Ġ= ĠAction Id . create ( this Ref :: class , Ġproperty ) ĊĊĠĠĠ Ġval Ġaction Ġ= ĠMob x . action ( action Name ) Ġ{ Ġinput : ĠT Ġ-> ĊĠĠĠĠĠ ĠPromise < R > Ġ{ Ġresolve , Ġreject Ġ-> ĊĠĠĠĠĠĠĠ Ġthis . action . start Coroutine ( input , Ġcompletion Ġ= Ġobject Ġ: ĠContinu ation < R > Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġcontext : ĠCor outine Context Ġ= ĠAction Coroutine Context ( action Name ) ĊĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġresume ( value : ĠR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve ( value ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġresume With Exception ( exception : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreject ( exception ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠReadOnly Value Property ( action ) ĊĠ Ġ} Ċ } Ċ