Re: [webrtc-pc] The same connection.peerIdentity promise can be resolved multiple times

I think the wordings can be more explicit instead of relying on the implicit behavior of promises. e.g. "If `connection.peerIdentity` is not yet resolved, resolve it with ...".

Still, it doesn't solve the first case where peer identity is set but first call to identity validation fails.

```javascript
// target peer identity is established during construction
const pc = new RTCPeerConnection({ peerIdentity: ... }) 
pc.setRemoteDescription(sdpWithInvalidAssertion) // first SRD fails
.catch(() => pc.setRemoteDescription(sdpWithValidAssertion)) // second SRD succeeds
.then(pc.peerIdentity)
.catch(err => ...); // pc.peerIdentity stays rejected forever
```

Relevant paragraphs:

> If identity validation fails, the peerIdentity promise is rejected with a newly created OperationError.
> 
> If identity validation fails and there is no a target peer identity, the value of the peerIdentity MUST be set to a new, unresolved promise instance. 

So if validation fails and there _is_ a target peer identity, the rejected `peerIdentity` promise is never replaced.

Probably a better way to cover all failure cases is:

- If identity validation fails and the `connection.peerIdentity` promise is not yet resolved, reject it with a newly created `OperationError` and set `connection.peerIdentity`  to a new, unresolved promise instance.

-- 
GitHub Notification of comment by soareschen
Please view or discuss this issue at https://github.com/w3c/webrtc-pc/issues/1513#issuecomment-318541423 using your GitHub account

Received on Friday, 28 July 2017 02:45:16 UTC