code: function () {
              /*  determine parameters  */
              var params = $cs.params("subscribe", arguments, {
                  name:      { pos: 0,     req: true  },
                  spec:      {             def: {}    },
                  ctx:       {             def: this  },
                  func:      { pos: 1,     req: true  },
                  args:      { pos: "...", def: []    },
                  capturing: {             def: false },
                  spreading: {             def: false },
                  bubbling:  {             def: true  },
                  noevent:   {             def: false },
                  exclusive: {             def: false },
                  spool:     {             def: null  }
              });
  
              /*  honor exclusive request
                  (attention: name can also be a regular expression object!)  */
              var subscriptions = this._subscriptions(params.name.toString(), params.spec);
              if (subscriptions.length === 1 && subscriptions[0].exclusive)
                  throw _cs.exception("subscribe", "existing exclusive subscription prevents additional one");
              if (params.exclusive && subscriptions.length > 0)
                  throw _cs.exception("subscribe", "non-exclusive subscription(s) prevent exclusive one");
  
              /*  attach parameters to component  */
              var id = _cs.cid();
              this.__subscription[id] = params;
  
              /*  optionally spool reverse operation  */
              if (params.spool !== null) {
                  var info = _cs.spool_spec_parse(this, params.spool);
                  info.comp.spool(info.name, this, "unsubscribe", id);
              }
  
              return id;
          }
docs: /*  subscribe on an event