sendFunctor = function() {
      'use strict';
      transport.sendTimerId_ = 0;

      try {
        // postMessage is a method of the window object, except in some
        // versions of Opera, where it is a method of the document object.  It
        // also seems that the appearance of postMessage on the peer window
        // object can sometimes be delayed.
        /**
         * @suppress {strictMissingProperties} Added to tighten compiler checks
         */
        const obj = win.postMessage ? win : win.document;
        if (!obj.postMessage) {
          goog.log.warning(
              goog.net.xpc.logger, 'Peer window had no postMessage function.');
          return;
        }

        obj.postMessage(
            channelName + '|' + service + ':' + payload,
            transport.peerHostname_);
        goog.log.fine(
            goog.net.xpc.logger, 'send(): service=' + service + ' payload=' +
                payload + ' to hostname=' + transport.peerHostname_);
      } catch (error) {
        // There is some evidence (not totally convincing) that postMessage can
        // be missing or throw errors during a narrow timing window during
        // startup.  This protects against that.
        goog.log.warning(
            goog.net.xpc.logger, 'Error performing postMessage, ignoring.',
            error);
      }
    }
Sends a message.
@param {string} service The name off the service the message is to be
delivered to.
@param {string} payload The message content.
@override