This could be used as a <V> coming out of a BatchLoader. That way people can represent values and capture exceptions better! DataLoader<String,Either<User>> dataLoader = ... Either<User> either = ... if (either.hasException() { println either.getException()