I've started using use-cases in kotlin for clean coding practices but not clear why we use the invoke operator overloading. What's the point and why not call it execute() instead?
interface GetUserUseCase {
operator fun invoke(): Single<Result<User>>
}