private void sendRequestsGetResponses(FutureResult<Void> futureResult, DeleteManager manager) {
    List<RequestInfo> requestInfoList = new ArrayList<>();
    Set<Integer> requestsToDrop = new HashSet<>();
    Set<RequestInfo> requestAcks = new HashSet<>();
    while (!futureResult.isDone()) {
      manager.poll(requestInfoList, requestsToDrop);
      List<ResponseInfo> responseInfoList;
      responseInfoList = networkClient.sendAndPoll(requestInfoList, requestsToDrop, AWAIT_TIMEOUT_MS);
      for (ResponseInfo responseInfo : responseInfoList) {
        RequestInfo requestInfo = responseInfo.getRequestInfo();
        assertNotNull("RequestInfo is null", requestInfo);
        if (requestAcks.contains(requestInfo)) {
          throw new IllegalStateException("Received response more than once for a request");
        }
        requestAcks.add(requestInfo);
        RequestInfo routerRequestInfo = responseInfo.getRequestInfo();
        RequestOrResponseType type = ((RequestOrResponse) routerRequestInfo.getRequest()).getRequestType();
        if (type == RequestOrResponseType.DeleteRequest) {
          manager.handleResponse(responseInfo);
        } else {
          throw new IllegalStateException("Unrecognized request type: " + type);
        }
      }
      responseInfoList.forEach(ResponseInfo::release);
      requestInfoList.clear();
    }
  }
Sends all the requests that the {@code manager} may have ready
@param futureResult the {@link FutureResult} that tracks the operation
@param manager the {@link DeleteManager} to poll for requests
ambry-router/src/test/java/com/github/ambry/router/DeleteManagerTest.java