@Override
 public PingResultInfo ping(PingInfo pingInfo)
     throws ExecutionException, InterruptedException, TimeoutException {
   FuturePromise<PingResultInfo> result = new FuturePromise<>();
   ping(pingInfo, result);
   if (pingInfo.getTimeout() > 0) return result.get(pingInfo.getTimeout(), pingInfo.getUnit());
   else return result.get();
 }