This is because the apiReady only resolves on datachannel events, but if the connections fail then there will never be a datachannel. It also never rejects. So in case the Role.sub connection never connects it will never resolve but also never reject.
A simple example is using a configuration without stun/turn and then trying to connect two devices from different networks (in my case it's a different problem and more involved but probably too distracting here).
Not sure if this template really applies because I managed to reproduce it on all browsers and with multiple ion-sfu versions. I hope it's okay if I don't fill it out.
Currently if the peer-connections fail then the
join
or better to say the returnedapiReady
(https://github.com/pion/ion-sdk-js/blob/1e7603187c89afd15a83c6b8287b03149de42b06/src/client.ts#L117-L139) Promise never resolves or rejects leading to a complete stall.This is because the
apiReady
only resolves ondatachannel
events, but if the connections fail then there will never be a datachannel. It also neverreject
s. So in case the Role.sub connection never connects it will neverresolve
but also neverreject
.A simple example is using a configuration without stun/turn and then trying to connect two devices from different networks (in my case it's a different problem and more involved but probably too distracting here).
Not sure if this template really applies because I managed to reproduce it on all browsers and with multiple ion-sfu versions. I hope it's okay if I don't fill it out.