@Override
    protected Traverser.Admin<E> processNextStart() throws NoSuchElementException {
        if (null == this.remoteTraversal) {
            try {
                promise().join();
            } catch (CompletionException e) {
                Throwable cause = e.getCause();
                // If the underlying future failed, join() will throw a CompletionException, for consistency
                // with previous behavior:
                // - Throw underlying exception if it was unchecked (RuntimeException or Error).
                // - Wrap in IllegalStateException otherwise.
                if (cause instanceof RuntimeException) {
                    throw (RuntimeException) cause;
                } else if (cause instanceof Error) {
                    throw (Error) cause;
                }
                throw new IllegalStateException(cause);
            }
        }
        return this.remoteTraversal.nextTraverser();
    }
Sends a {@link Traversal} to a {@link RemoteConnection} and iterates back the results.

@author Stephen Mallette (http://stephen.genoprime.com)
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java