package Ġio . github . re ug n . a ero spike . kotlin . listener Ċ Ċ import Ġcom . a ero spike . client . A ero spike Exception Ċ import Ġkotlinx . coroutines . Cancellation Exception Ċ import Ġkotlinx . coroutines . Comp letable Deferred Ċ Ċ abstract Ġclass ĠBase Listener < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdeferred Ġ= ĠComp letable Deferred < T >() ĊĊĠĠĠ Ġprotected Ġfun Ġsuccess ( value : ĠT ?): ĠBase Listener < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeferred . complete ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeferred . cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġfailure ( cause : ĠThrowable ?): ĠBase Listener < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġdeferred . complete Exception ally ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcause Ġ?: ĠA ero spike Exception ("${ this . java Class . name } Ġnull Ġcause ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġawait (): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeferred . await () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ(_ : ĠC ancellation Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ