@Override
 public Stream syn(SynInfo synInfo, StreamFrameListener listener)
     throws ExecutionException, InterruptedException, TimeoutException {
   FuturePromise<Stream> result = new FuturePromise<>();
   syn(synInfo, listener, result);
   if (synInfo.getTimeout() > 0) return result.get(synInfo.getTimeout(), synInfo.getUnit());
   else return result.get();
 }