def unshift(*filter_spec, &block)
      filter = build_filter(filter_spec, &block)

      synchronize do
        @filters.unshift filter
      end
      self
    end
def unshift(*filter_spec, &block)
      filter = build_filter(filter_spec, &block)

      synchronize do
        @filters.unshift filter
      end
      self
    end
Prepends a new filter at the beginning of the filter chain. You can either
 give a callable object (e.g. a `Proc` or a {Filter}) or specify the filter
 with a given block.

 @param filter_spec (see #build_filter)
 @raise [TypeError] if we could not build a filter from the given
   `filter_spec`
 @return [self]