I definitely think that we need to keep the "blocked" events as non-error events since it supports the use case of opening a connection and displaying UI to the user asking that other tabs are closed if the "blocked" event fires.
That can very well be achieved by detecting the BlockedError, and adding a retry button which calls open() again.
If you really want a open() and wait forever behavior, that should not be the default one.
