In @didtools/pkh-ethereum, there is a safeSend function defined in the utils file which handles performing a call to an RPC endpoint for the Ethereum blockchain. This method uses a callback to retrieve the value from the send function, which doesn't take a callback, but instead returns a promise.
Technical Information
Part of the definition of safeSend is as follows:
… if (provider.sendAsync || provider.send) {
const sendFunc = (provider.sendAsync ? provider.sendAsync : provider.send).bind(provider);
const request = encodeRpcMessage(method, params);
return new Promise((resolve, reject)=>{
sendFunc(request, (error, response)=>{
if (error) reject(error);
if (response.error) {
const error = new Error(response.error.message);
error.code = response.error.code;
error.data = response.error.data;
reject(error);
}
resolve(response.result);
});
});
}
As expected ethers v6 send follows this format and a call to getAccountId or (more importantly)EthereumWebAuth.getAuthMethod will fail silently when the call is performed and the result is returned as a promise rather than in a callback.
Additionally
The part of safeSend that uses the request method looks like:
Description
In
@didtools/pkh-ethereum
, there is asafeSend
function defined in theutils
file which handles performing a call to an RPC endpoint for the Ethereum blockchain. This method uses a callback to retrieve the value from thesend
function, which doesn't take a callback, but instead returns a promise.Technical Information
Part of the definition of
safeSend
is as follows:The problem is that the Legacy Provider API only defines a callback for
sendAsync
. Regularsend
returns a promise.As expected
ethers
v6send
follows this format and a call togetAccountId
or (more importantly)EthereumWebAuth.getAuthMethod
will fail silently when the call is performed and the result is returned as a promise rather than in a callback.Additionally
The part of
safeSend
that uses therequest
method looks like:According to the documentation, I'm pretty sure that should be: