code: public void failed(Throwable failureCause) {
      Map<ClientTransport.PingCallback, Executor> callbacks;
      synchronized (this) {
        if (completed) {
          return;
        }
        completed = true;
        this.failureCause = failureCause;
        callbacks = this.callbacks;
        this.callbacks = null;
      }
      for (Map.Entry<ClientTransport.PingCallback, Executor> entry : callbacks.entrySet()) {
        notifyFailed(entry.getKey(), entry.getValue(), failureCause);
      }
    }
docs: Completes this operation exceptionally. Registered callbacks are invoked and provided the
  given throwable as the cause of failure.
  
  @param failureCause the cause of failure