public <T>GridClientFutureAdapter<T> chain(GridClientFutureCallback<R,T> cb){
  GridClientFutureAdapter<T> fut=new GridClientFutureAdapter<>();
  cbs.add(new DoneCallback<>(cb,null,fut));
  if (isDone())   fireDone();
  return fut;
}

public < T > GridClientFutureAdapter < T > chain ( GridClientFutureCallback < R , T > cb ) { GridClientFutureAdapter < T > fut = new GridClientFutureAdapter < > ( ) ; cbs . add ( new DoneCallback < > ( cb , null , fut ) ) ; if ( isDone ( ) ) fireDone ( ) ; return fut ; }
creates future ' s chain and completes chained future , when this future finishes .
