docs: function next( session ) {
      if ( session !== this._session ) return;
      if ( this._index >= this._tasks.length ) {
          this._index = 0;
          this._started = false;
          delete this._session;
          this._onEnd( this );
          return;
      }
  
      const
          that = this,
          tsk = this._tasks[ this._index++ ];
      if ( this._debug ) {
          console.info(
              `[dom.fx] tsk[${this._index - 1}]: `, tsk.label,
              `(${Date.now() - this._startTime} ms)`, tsk.args, session
          );
      }
      tsk( function () {
          delay( next.bind( that, session ) );
      }, true );
  }