public <T> void submitToMember(Callable<T> task, Member member, ExecutionCallback<T> callback) {
if (isShutdown()) {
throw new RejectedExecutionException(getRejectionMessage());
}
NodeEngine nodeEngine = getNodeEngine();
Data taskData = nodeEngine.toData(task);
MemberCallableTaskOperation op = new MemberCallableTaskOperation(name, null, taskData);
OperationService operationService = nodeEngine.getOperationService();
Address address = ((MemberImpl) member).getAddress();
operationService.createInvocationBuilder(DistributedExecutorService.SERVICE_NAME, op, address)
.setCallback(new ExecutionCallbackAdapter(callback)).invoke();