code: def add(self, method_mask, path, func):
          
          is_err = len(signature(func).parameters) == 3
          is_subchain = isinstance(func, MiddlewareChain)
          tup = MiddlewareNode(func=func,
                               mask=method_mask,
                               path=path,
                               is_errorhandler=is_err,
                               is_subchain=is_subchain,)
          self.mw_list.append(tup)
docs: Add a function to the middleware chain.
          This function is returned when iterating over the chain with matching method and path.
  
          Args:
              method_mask (growler.http.HTTPMethod): A bitwise mask intended to match specific
                  request methods.
              path (str or regex): An object with which to compare request urls
              func (callable): The function to be yieled from the generator upon a request
                  matching the method_mask and path