                     @change 'radius'
 
         change: (type, opts) ->
+            if @changePending
+                 @listenToOnce @contents, 'show', =>
+                     @changePending = false
+                     @change type, opts
+                 return
             # Don't react if browse is already opened
             return if type is 'browse' and @openViewType is 'browse'
 
             if type == 'browse'
                 @restoreViewTypeOnCancel = type
-            else if type != 'loading-indicator'
-                if @openViewType == @restoreViewTypeOnCancel and type != @openViewType
-                    @restoreViewTypeOnCancel = null
+            else if @openViewType == @restoreViewTypeOnCancel and type not in [@openViewType, null, 'loading-indicator']
+                @restoreViewTypeOnCancel = null
 
             switch type
                 when 'browse'

            @updatePersonalisationButtonClass type

            if view?
                @contents.show view, animationType: @getAnimationType(type)
                @openViewType = type
                @opened = true

            @openViewType = null # initially the sidebar is closed.
            @addListeners()
            @restoreViewTypeOnCancel = null
            @changePending = false
        addListeners: ->
            @listenTo @cancelToken, 'change:value', =>
                wrappedValue = @cancelToken.value()
