public Future<Void> runAsync(final WaiterParameters<Input> waiterParameters, final WaiterHandler callback)
            throws AmazonServiceException, WaiterTimedOutException, WaiterUnrecoverableException {

        return executorService.submit(new java.util.concurrent.Callable<Void>() {
            @Override
            public Void call() throws Exception {
                try {
                    run(waiterParameters);
                    callback.onWaitSuccess(waiterParameters.getRequest());
                } catch (Exception ex) {
                    callback.onWaitFailure(ex);

                    throw ex;
                }
                return null;
            }
        });

    }
Polls asynchronously until it is determined that the resource
transitioned into the desired state or not. Includes additional
callback.

@param waiterParameters Custom provided parameters. Includes request and
                        optional custom polling strategy
@param callback         Custom callback
@return Future object that holds the result of an asynchronous
computation of waiter
aws-java-sdk-core/src/main/java/com/amazonaws/waiters/WaiterImpl.java