docs: function Destructible () {
      var vargs = []
      vargs.push.apply(vargs, arguments)
  
      // By default, we wait a full second for all outstanding callbacks to
      // return.
      this._timeout = typeof vargs[0] == 'number' ? vargs.shift() : 1000
  
      // Displayed when we timeout.
      this.key = vargs.shift()
  
      this.context = vargs
  
      // Errors returned to callbacks.
      this._errors = []
  
      // Set immediately upon destruction. Will be true if inspected by any of the
      // destructors registered with `destruct` or `scrammed`.
      this.destroyed = false
  
      // You're welcome to dump this list of waiting callbacks if it helps you
      // with debugging.
      this.waiting = []
  
      // Listen to know when to shut down.
      this.destruct = new Signal
  
      // Listen to know the moment we get an error, but not to get the error.
      this.errored = new Signal
  
      // Listen to know when we're done.
      this.completed = new Signal
  
      // Listen to know if we've forcibly shutdown before all callbacks have
      // returned.
      this.scrammed = new Signal
  
      // Internal completion signal.
      this._completed = new Signal
  
      this._vargs = []
  
      this._runScramTimer = this._timeout != Infinity
  }