'Scoped timeout setter.  Sets the timeout within the scope,
and restores it when leaving the scope.
When accessing :attr:`timeout` within the scope, it will be
calculated against the time when the scope was entered, in a
countdown fashion.
If :const:`None` is specified for ``timeout``, then the current
timeout is used is made.  This allows :const:`None` to be specified
as a default argument with less complexity.'

def countdown(self, timeout=default):

    if (timeout is self.maximum):
        return _DummyContext
    if ((timeout is self.default) and (self.timeout is self.maximum)):
        return _DummyContext
    if (timeout is self.default):
        timeout = self._timeout
    return _countdown_handler(self, timeout)
