code: function (offerOptions, next) {
          var self = this;
          this.state = 'pending';
  
          next = next || function () {};
  
          this.pc.isInitiator = true;
          this.pc.offer(offerOptions, function (err, offer) {
              if (err) {
                  self._log('error', 'Could not create WebRTC offer', err);
                  return self.end('failed-application', true);
              }
  
              // a workaround for missing a=sendonly
              // https://code.google.com/p/webrtc/issues/detail?id=1553
              if (offerOptions && offerOptions.mandatory) {
                  offer.jingle.contents.forEach(function (content) {
                      var mediaType = content.application.media;
  
                      if (!content.description || content.application.applicationType !== 'rtp') {
                          return;
                      }
  
                      if (!offerOptions.mandatory.OfferToReceiveAudio && mediaType === 'audio') {
                          content.senders = 'initiator';
                      }
  
                      if (!offerOptions.mandatory.OfferToReceiveVideo && mediaType === 'video') {
                          content.senders = 'initiator';
                      }
                  });
              }
  
              offer.jingle.contents.forEach(filterUnusedLabels);
  
              self.send('session-initiate', offer.jingle);
  
              next();
          });
      }
docs: ---------------------------------------------------------------- Session control methods ----------------------------------------------------------------