¿Cómo crear una promise de kotlin.js.Promise nested?

kotlin.js.Promise tiene function then con esta statement:

 open fun <S> then( onFulfilled: (T) -> S, onRejected: (Throwable) -> S = definedExternally ): Promise<S> 

Tengo dos funciones a() y b() . Ambos devuelven Promise<Int> . (Representan algunas requestes al server.) Necesito combinarlas y crear una nueva function como:

 fun c(): Promise<Int> { a().then({ b() }) } 

Pero no es posible, porque el tipo de retorno es Promise<Promise<Int>> y no Promise<Int> .

Creo que esto es posible en Javascript. ¿Cómo puedo encadenar las promises en Kotlin?

necesita una Promise adicional para eso, por ejemplo:

 fun c(): Promise<Int> { return Promise({ resolve, reject -> a().then({ b().then(resolve, reject); }); }) } 

el código anterior también se puede simplificar mediante el uso de la function de expresión única como se indica a continuación:

 fun c() = Promise({ resolve, reject -> a().then({ b().then(resolve, reject); }); }); 
 fun c(): Promise<Int> { return a().then ({ b().unsafeCast<Int>() //Result of b is Promise<Int>, not Int, but then has bad type declaration }) }