Encadenamiento de promises con types de error personalizados con Kovenant

Estoy usando Retrofit para acceder a una API REST y me gustaría usar la function de Kovenant para encadenar varias unidades de trabajo. En otras palabras, quiero alimentar el resultado de una llamada API como parámetro a otra llamada API.

Definí un tipo de error personalizado que incluye una propiedad para contener códigos de error específicos de API definidos de la siguiente manera:

 class ApiError(val statusCode: Int, val apiErrorCode: Int, val message: String) 

Si se produce un error durante una llamada API, se crea una instancia de esta class con los códigos de error apropiados.

De acuerdo con la documentation de Kovenant, puedo crear una instancia de Defernetworking<V, E> para get Promise<V, E> . Esperaba poder suministrar ApiError para el parámetro genérico E No vi ninguna restricción genérica en la definición de Defernetworking de Kovenant que parece requerir que E sea ​​una Exception .

Dicho esto, cuando bash encadenar dos funciones que devuelven Promise<V, ApiError> usando then , recibo un error del comstackdor que indica que el tipo esperado para then es Promise<V, Exception> .

¿Puedo hacer que Kovenant funcione con un tipo de error personalizado? De lo contrario, ¿está subclasando Exception para include las properties? Necesito la solución correcta para lo que estoy tratando de lograr.

    Algunas de las definiciones base no tienen límites generics para E pero casi todas las funciones de extensión indican que E es de tipo Exception . Ver el código fuente en Kovenant promises-api.kt muestra que está claro que la mayoría de las cosas tienen esta expectativa.

    Simplemente puede cambiar su class de error para que sea un descendiente de Exception :

     class ApiError(val statusCode: Int, val apiErrorCode: Int, message: String) : Exception(message) 

    Luego puedes lanzarla para que falle la Promise o usarla para llamar al fallo en el Defernetworking .