void handleResponse(ResponseInfo responseInfo) {
    long startTime = time.milliseconds();
    DeleteResponse deleteResponse =
        RouterUtils.extractResponseAndNotifyResponseHandler(responseHandler, routerMetrics, responseInfo,
            DeleteResponse::readFrom, DeleteResponse::getError);
    RequestInfo routerRequestInfo = responseInfo.getRequestInfo();
    int correlationId = ((DeleteRequest) routerRequestInfo.getRequest()).getCorrelationId();
    DeleteOperation deleteOperation = correlationIdToDeleteOperation.remove(correlationId);
    // If it is still an active operation, hand over the response. Otherwise, ignore.
    if (deleteOperations.contains(deleteOperation)) {
      boolean exceptionEncountered = false;
      try {
        deleteOperation.handleResponse(responseInfo, deleteResponse);
      } catch (Exception e) {
        exceptionEncountered = true;
        deleteOperation.setOperationException(
            new RouterException("Delete handleResponse encountered unexpected error", e,
                RouterErrorCode.UnexpectedInternalError));
      }
      if (exceptionEncountered || deleteOperation.isOperationComplete()) {
        if (deleteOperations.remove(deleteOperation)) {
          onComplete(deleteOperation);
        }
      }
      routerMetrics.deleteManagerHandleResponseTimeMs.update(time.milliseconds() - startTime);
    } else {
      routerMetrics.ignoredResponseCount.inc();
    }
  }
Handles responses received for each of the {@link DeleteOperation} within this delete manager.
@param responseInfo the {@link ResponseInfo} containing the response.
ambry-router/src/main/java/com/github/ambry/router/DeleteManager.java