public void setTimeout(IOException error) {
    synchronized (this) {
      if (done) {
        return;
      }
      this.done = true;
      this.error = error;
    }
    callback.run(this);
  }
called from timeoutTask, prevent self cancel
hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/Call.java