webcrypto.dart
webcrypto.dart copied to clipboard
Ensure correct handling of errors from thread-local storage
BoringCrypto exposes ERR_clear_error()
which clears the thread-local error stack.
For any function in BoringCrypto which may set error state, we must read the error stack, before we do any async/await, as this may trigger the code to continue running on a different thread.
Perhaps, we have to use _Scope.sync
for everything, and ensure that we check/clear the error stack at the end of every _Scope.sync
block.
Or maybe we have to invent a new block form.