``` fun fetchModuleInfo(): Either<DomainErro...
# arrow
e
Copy code
fun fetchModuleInfo(): Either<DomainError, Response.ModuleInfo> {
        val req = Request(RequestType.DISCOVER)

        return Try {
            val resp = nc.request(module, req.protoMarshal()).get(2, TimeUnit.SECONDS)
            return when (val msg = Response.protoUnmarshal(resp.data).type) {
                is Type.ModuleInfo -> Either.right(msg.moduleInfo)
                is Type.Error -> Either.left(mapError(msg.error))
                else -> Either.left(DomainError.WrongReturnTypeError("Fetch Module Wrong Return Type!"))
            }
        }.toEither { mapException(it, "Fetch Module") }
    }