``` fun <T, R> Observable<T>.emitApiEv...
# getting-started
u
Copy code
fun <T, R> Observable<T>.emitApiEvents2(
        started: () -> R,
        success: (T) -> R,
        errorr: (Throwable) -> R): Observable<R> {

    return emitApiEvents2(started, success, errorr) { it }
}

fun <T, R, S> Observable<T>.emitApiEvents2(
        started: () -> R,
        success: (T) -> R,
        errorr: (S) -> R,
        customErrorTransformation: (Throwable) -> S): Observable<R> {

    return map { success(it) }
            .doOnError(LOG::e)
            .onErrorReturn { t -> errorr(customErrorTransformation(t)) }
            .startWith(started())
}