         }
         else if error.isInvalidTokenError
         {
-            Notification.ClientDidReceiveInvalidTokenError.post(object: nil)
+            Notification.ClientDidReceiveInvalidTokenError.post(object: self.token(fromTask: task))
+        }
+    }
+    
+    private func token(fromTask task: NSURLSessionDataTask?) -> String?
+    {
+        guard let task = task else
+        {
+            return nil
+        }
+        
+        if let bearerHeader = task.originalRequest?.allHTTPHeaderFields?["Authorization"]
+        {
+            guard let range = bearerHeader.rangeOfString("Bearer ") else
+            {
+                return nil
+            }
+            
+            var mutableBearerHeader = String(bearerHeader)
+            mutableBearerHeader.removeRange(range)
+            return mutableBearerHeader
+        }
+        else
+        {
+            return nil
         }
     }
 }

    
    // MARK: - Private error handling
    
    private func handleError<ModelType: MappableResponse>(error: NSError, request: Request<ModelType>)
    {
        if error.isServiceUnavailableError
        {

            return
        }
        
        self.handleError(error, request: request, task: task)
        
        if case .MultipleAttempts(let attemptCount, let initialDelay) = request.retryPolicy
            where attemptCount > 1
