public void await() {
   try {
     cdl.await();
   } catch (InterruptedException ex) {
     throw new RuntimeException(ex);
   }
 }
 public void awaitSpin() {
   while (cdl.getCount() != 0L) ;
 }
 @Override
 public void onError(Throwable error) {
   bh.consume(error);
   cdl.countDown();
 }
 @Override
 public void onSuccess(Object value) {
   bh.consume(value);
   cdl.countDown();
 }