@Nonnull
  private String tryWithCredsOrFail(
      Request.Builder requestBuilder, String jsonResponseKey, String causeMessage)
      throws IOException, DestinationMemoryFullException, PermissionDeniedException {
    final MicrosoftApiResponse resp = tryWithCredsOrFail(requestBuilder, causeMessage);
    return resp.getJsonValue(objectMapper, jsonResponseKey, causeMessage);
  }
Try a request to Microsoft servers or fail with a critical DTP exception, after considering
standard token-refresh retry options.

<p>Example usage:

<pre>{@code
@Nonnull String folderId = tryWithCredsOrFail(request, "folderId", "creating a folder");
// ...carry on as normal with business logic...
}</pre>

@param jsonResponseKey the top-level value to extract from the response body.
@param causeMessage a contextual message to include as the root cause/context when throwing a
    DTP excption.
@return expected JSON value that api servers returned.
extensions/data-transfer/portability-data-transfer-microsoft/src/main/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporter.java