docs: def where(self, predicate):
          '''Filters elements according to whether they match a predicate.
  
          Note: This method uses deferred execution.
  
          Args:
              predicate: A unary function which is applied to each element in the
                  source sequence. Source elements for which the predicate
                  returns True will be present in the result.
  
          Returns:
              A Queryable over those elements of the source sequence for which
              the predicate is True.
  
          Raises:
              ValueError: If the Queryable is closed.
              TypeError: If the predicate is not callable.
          '''
          if self.closed():
              raise ValueError("Attempt to call where() on a closed Queryable.")
  
          if not is_callable(predicate):
              raise TypeError("where() parameter predicate={predicate} is not "
                                    "callable".format(predicate=repr(predicate)))
  
          return self._create(ifilter(predicate, self))