@ file : Suppress (" Too Generic Exception Ca ught ") Ċ Ċ package Ġcom . github . d xa ht ep b . etcd idea Ċ Ċ @ Suppress (" Red undant Suspend Modifier ") Ċ internal Ġsuspend Ġinline Ġfun Ġ< T Ġ: ĠAuto Closeable ?, ĠR > ĠT . use Async ( block : Ġ( T ) Ġ-> ĠR ): ĠR Ġ{ ĊĠĠĠ Ġvar Ġexception : ĠThrowable ? Ġ= Ġnull ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġblock ( this ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexception Ġ= Ġe ĊĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . close Finally ( exception ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠAuto Closeable ?. close Finally ( cause : ĠThrowable ?) Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġthis Ġ== Ġnull Ġ-> Ġ{} ĊĠĠĠ Ġcause Ġ== Ġnull Ġ-> Ġclose () ĊĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( close Exception : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcause . add Sup pressed ( close Exception ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ