src/main/java/javascalautils/concurrent/ExecutorImpl.java
@Override
    public <T> Future<T> execute(final Executable<T> executable) {
        final Promise<T> promise = Promise();
        return execute(promise, () -> {
            try {
                executable.execute(promise);
                // if the implementation didn't respond to the Promise we mark it as a failure.
                if (!promise.isCompleted()) {
                    promise.failure(new IllegalStateException("No response was provided by the Promise"));
                }
            } catch (Exception ex) {
                promise.failure(ex);
            }
        });
    }
@Override
    public <T> Future<T> execute(final Executable<T> executable) {
        final Promise<T> promise = Promise();
        return execute(promise, () -> {
            try {
                executable.execute(promise);
                // if the implementation didn't respond to the Promise we mark it as a failure.
                if (!promise.isCompleted()) {
                    promise.failure(new IllegalStateException("No response was provided by the Promise"));
                }
            } catch (Exception ex) {
                promise.failure(ex);
            }
        });
    }
/*
(non-Javadoc)

@see com.ericsson.concurrent.Executor#execute(com.ericsson.concurrent.Executable)