code: function (dispatchEvent) {
    this.dispatchEvent = dispatchEvent;
    this.name = null;
    this._setup = false;
    this.pc = freedom['core.peerconnection']();
    this.pc.on('onReceived', this.onData.bind(this));
    this.pc.on('onClose', this.onClose.bind(this));
    this.pc.on('onOpenDataChannel', this.onNewTag.bind(this));
    this._tags = [];
    // Maps tags to booleans. The boolean corresponding to a given tag
    // is true if this WebRTCTransportProvider is currently sending out
    // chunks of a message for that tag.
    this._sending = {};
    // Maps tags to lists of whole outgoing messages that are waiting to
    // be sent over the wire. Messages must be sent one at a time to
    // prevent the interleaving of chunks from two or messages.
    this._queuedMessages = {};
    // Entries in this dictionary map tags to arrays containing chunks
    // of incoming messages. If there is no entry for a tag in the
    // dictionary, then we have not received the first chunk of the next
    // message.
    this._chunks = {};
    // Messages may be limited to a 16KB length
    // http://tools.ietf.org/html/draft-ietf-rtcweb-data-channel-07#section-6.6
    this._chunkSize = 15000;
    // The maximum amount of bytes we should allow to get queued up in
    // peerconnection, any more and we start queueing ourself.
    this._pcQueueLimit = 1024 * 250;
    // Javascript has trouble representing integers larger than 2^53 exactly
    this._maxMessageSize = Math.pow(2, 53);
  }
docs: /*
  Peer 2 Peer transport provider.