                 case "currentItem.playbackLikelyToKeepUp":
                     if let playbackLikelyToKeepUp = player.currentItem?.playbackLikelyToKeepUp where playbackLikelyToKeepUp {
                         //There is enough data in the buffer
-                        if !pausedForInterruption && state != .Paused && (stateWhenConnectionLost == nil || stateWhenConnectionLost != .Paused) {
+                        if !pausedForInterruption && state != .Paused && (stateWhenConnectionLost == nil || stateWhenConnectionLost != .Paused) && (stateBeforeBuffering == nil || stateBeforeBuffering != .Paused) {
+                            stateBeforeBuffering = nil
                             state = .Playing
                             player.play()
                         }

                        interruptionCount++
                    }

                    if reachability.isReachable() || (currentItem?.soundURLs[currentQuality ?? defaultQuality]?.isOfflineURL ?? false) {
                        state = .Buffering
                    }


    /// A boolean value indicating whether the player has been paused because of a system interruption.
    private var pausedForInterruption = false
    
    /// The state before the player went into .Buffering. It helps to know whether to restart or not the player.
    private var stateBeforeBuffering: AudioPlayerState?
    
    /// The time observer
    private var timeObserver: AnyObject?

