As with most problems that take forever to figure out, the solution is simple. (Though I found plenty of very complex ways of addressing the same thing; but didn't work)
The problem was subsites.
Need to include the subsite in the ClientContext.
In my case, I needed to determine the subsite dynamicaly from the
fileurl which is stored in the
e.CommandArgument of a control.
Dim subsite As String = Regex.Match(e.CommandArgument.ToString(), ".*?(?=\/)", RegexOptions.IgnoreCase).ToString()
Using oclientContext As ClientContext = New ClientContext("https://<sharepointsite>/" + subsite)