void poll(RequestRegistrationCallback<PutOperation> requestRegistrationCallback) {
      cleanupExpiredInFlightRequests(requestRegistrationCallback);
      checkAndMaybeComplete();
      if (!isComplete()) {
        fetchRequests(requestRegistrationCallback);
      }
    }
This is one of two main entry points to this class, the other being
{@link #handleResponse(ResponseInfo, PutResponse)}.
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 PutChunk. The callers guarantee
that this method is called on all the PutChunks 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/PutOperation.java