@Override
  public ArtifactDescriptorResult readArtifactDescriptor(RepositorySystemSession session, ArtifactDescriptorRequest request)
    throws ArtifactDescriptorException {
    if (null == request) return null;

    ArtifactDescriptorRequestData requestData = new ArtifactDescriptorRequestData(request);

    ArtifactDescriptorResultData resultData = descriptorCache.computeIfAbsent(requestData, rd -> doReadArtifactDescriptor(session, request));

    if (null != resultData.getDescriptorException()) {
      throw resultData.getDescriptorException();
    }

    return getResult(request, resultData);
  }
@Override
  public ArtifactDescriptorResult readArtifactDescriptor(RepositorySystemSession session, ArtifactDescriptorRequest request)