3
I’m using Gopherjs, and in it there are two ways to perform a function, via Call() or via Invoke(). Initially it was using a code similar to this:
js.Global.Get("navigator").Get("credentials").Get("store").Invoke(
    password.New(js.M{"id": id, "password": pass, "name": email}),
)
But it had as a result:
Uncaught (in Promise) Typeerror: Failed to execute 'store' on 'Credentialscontainer': Illegal Invocation at :1:36
So I decided to test the Call, using js.Global.Get("navigator").Get("credentials").Call("store", ...), that worked, but I was curious because the Invoke didn’t work.
In Javascript, it seems that you have a similar behavior if you do:
x = window.navigator.credentials.store; 
x(new PasswordCredential({id: "a", password:"b"}))
Or, yet to be done:
window.navigator.credentials.store.call(
    new PasswordCredential({id: "a", password:"b"})
)
In both cases it results in the error of Illegal invocation.
Why does this error occur? Because it only occurs with some functions/objects? There is a way to identify if there is a way to use the Invoke (or, the Call Javascript? ) before causing the error?