console.log('pc1 adds an video track');
const stream1 = await navigator.mediaDevices.getUserMedia({video: true, fake: true});
const [localVideoTrack] = stream1.getVideoTracks();
pc1.addTrack(localVideoTrack, stream1);
console.log('pc2 adds an audio track');
const stream2 = await navigator.mediaDevices.getUserMedia({audio: true, fake: true});
const [localAudioTrack1] = stream2.getAudioTracks();
pc2.addTrack(localAudioTrack1, stream2);
console.log('pc1 and pc2 negotiate');
offer = await pc1.createOffer();
await Promise.all([pc1.setLocalDescription(offer), pc2.setRemoteDescription(offer)]);
answer = await pc2.createAnswer();
await Promise.all([await pc2.setLocalDescription(answer), await pc1.setRemoteDescription(answer)]);
Above example fails to negotiate.