def delete(observer)
      old_size = @stack.size
      @stack.delete_if do |o|
        o[:observer] == observer
      end
      old_size == @stack.size ? nil : observer
    end
def delete(observer)
      old_size = @stack.size
      @stack.delete_if do |o|
        o[:observer] == observer
      end
      old_size == @stack.size ? nil : observer
    end
Remove an observer from the stack.

 @param [#call] observer the callable object that should be removed.
 @return [#call, nil] the original object or `nil`