code: public IPromise ordered(Function<T, IPromise> toCall) {
          final IPromise result = toCall.apply((T) actors[index]);
          index++;
          if (index==actors.length)
              index = 0;
          if ( prev == null ) {
              prev = new Promise();
              result.then(prev);
              return prev;
          } else {
              Promise p = new Promise();
              prev.getNext().finallyDo((res, err) -> result.then((res1, err1) -> p.complete(res1, err1)));
              prev = p;
              return p;
          }
      }
docs: calls given function round robin. typical use:
  
  hoarde.ordered( actor -> actor.decode(byte[]) ).onResult( decodedObj -> businesslogic(decodedObj) );
  
  after
  @param toCall
  @return