public Iterator<Task> batchPollTasksByTaskTypeAsync(
            String taskType, String workerId, int count, int timeoutInMillisecond) {
        Preconditions.checkArgument(StringUtils.isNotBlank(taskType), "Task type cannot be blank");
        Preconditions.checkArgument(StringUtils.isNotBlank(workerId), "Worker id cannot be blank");
        Preconditions.checkArgument(count > 0, "Count must be greater than 0");

        Iterator<TaskPb.Task> it =
                stub.batchPoll(
                        TaskServicePb.BatchPollRequest.newBuilder()
                                .setTaskType(taskType)
                                .setWorkerId(workerId)
                                .setCount(count)
                                .setTimeout(timeoutInMillisecond)
                                .build());

        return Iterators.transform(it, protoMapper::fromProto);
    }
Perform a batch poll for tasks by task type. Batch size is configurable by count. Returns an
iterator that streams tasks as they become available through GRPC.

@param taskType Type of task to poll for
@param workerId Name of the client worker. Used for logging.
@param count Maximum number of tasks to be returned. Actual number of tasks returned can be
    less than this number.
@param timeoutInMillisecond Long poll wait timeout.
@return Iterator of tasks awaiting to be executed.
grpc-client/src/main/java/com/netflix/conductor/client/grpc/TaskClient.java