@Override public <S> AFuture<S> map (AThreadPool tp, AFunction1<T, S, ?> f) {
        final AFutureImpl<S> result = new AFutureImpl<> (tp);

        onComplete (tp, v -> {
            try {
                result.complete (v.map (f));
            }
            catch (Throwable th) {
                result.completeAsFailure (th);
            }
        });

        return result;
    }
@Override public <S> AFuture<S> map (AThreadPool tp, AFunction1<T, S, ?> f) {
        final AFutureImpl<S> result = new AFutureImpl<> (tp);

        onComplete (tp, v -> {
            try {
                result.complete (v.map (f));
            }
            catch (Throwable th) {
                result.completeAsFailure (th);
            }
        });

        return result;
    }
@ Override public < S > AFuture < S > map ( AThreadPool tp , AFunction1 < T , S , ? > f ) { final AFutureImpl < S > result = new AFutureImpl <> ( tp ) ; onComplete ( tp , v -> { try { result . complete ( v . map ( f ) ) ; } catch ( Throwable th ) { result . completeAsFailure ( th ) ; } } ) ; return result ; }
}
}