code: function initPid() {
      if(!da.pid) {
        if(!self.crypto && isNodeJs()) {
          da._publicKey = Math.random().toString(); // TODO
          da.pid = require('crypto')
            .createHash('sha256')
            .update(da._publicKey, 'latin1')
            .digest('base64');
        } else {
          return da.pid || Promise.resolve()
            .then(() => self.crypto.subtle ||
                (self.crypto.subtle = self.crypto.webkitSubtle))
            .then(() => self.crypto.subtle.generateKey(
                  {name: 'ECDSA', namedCurve: 'P-521'},
                  true, ['sign', 'verify']))
            .then(key => self.crypto.subtle.exportKey('spki', key.publicKey))
            .then(spki => da._publicKey = spki)
            .then(buf => self.crypto.subtle.digest('SHA-256', buf))
            .then(buf => btoa(da.buf2ascii(buf)))
            .then(base64 => da.pid = da.nid = base64)
            .catch(e => {
              da.pid = da.nid = 'local';
            });
        }
      }
    }
docs: ## Message Passing  ### `pid`, `nid`  `direape.pid` is id of the current process. `direape.nid` is the id of the main process on this computer/node.  In worker processes, these are set by the parent thread.  Some of the code below is in progress. Cryptographic ids will be used when it becomes more distributed.