void poll(RequestRegistrationCallback<GetOperation> requestRegistrationCallback) {
      //First, check if any of the existing requests have timed out.
      cleanupExpiredInFlightRequests(requestRegistrationCallback);
      maybeProcessCallbacks();
      checkAndMaybeComplete();
      if (!isComplete()) {
        fetchRequests(requestRegistrationCallback);
      }
    }
This is one of two main entry points to this class, the other being
{@link #handleResponse(ResponseInfo, GetResponse)}.
Apart from fetching requests to send out, this also checks for timeouts of issued requests,
status of the operation and anything else that needs to be done within this GetChunk. The callers guarantee
that this method is called on the GetChunks of an operation until either the operation, or the chunk operation
is completed.
@param requestRegistrationCallback the {@link RequestRegistrationCallback} to call for every request that gets
                                   created as part of this poll operation.
ambry-router/src/main/java/com/github/ambry/router/GetBlobOperation.java