(For Alex L) Added unlabel and updated tests.

@lopatin 
self.request is no longer guaranteed to be set. Maybe instead of the else statement, `self.request = None` should be moved before the first if statement?