Generally my approach is to start from the option, then look for a run-together version of it. This leads to:
however Microsoft Graph backends seem to have an additional level that I can’t explain, but will point to:
There is a defined interface (which gets expanded on for backends with additional capabilities) defined at
https://github.com/duplicati/duplicati/blob/master/Duplicati/Library/Interface/IBackend.cs
and I’m not sure how much unwanted isolation that might add going between the code areas. If this gets deeper, you might want to ask in Developer category of the forum, which some developers might visit…
EDIT:
I’m not sure if it fits or will help here, but my hints about the lower-level HTTP response handling are here.