@Override
    public T get(long timeout, TimeUnit unit) throws TimeoutException {
        try {
            return Timeouts.getWithTimeout((int) timeout, unit, this::get);
        } catch (org.rnorth.ducttape.TimeoutException e) {
            throw new TimeoutException(e.getMessage());
        }
    }
Future implementation with lazy result evaluation <b>in the same Thread</b> as caller.

@param <T>
core/src/main/java/org/testcontainers/utility/LazyFuture.java