 
                     context("some fail") {
 
+                        var fail1: MockURLSessionTask!
+
                         beforeEach {
+                            fail1 = service.perform(call, autoStart: false) { (_: Result<MockModel>) in } as! MockURLSessionTask
+                            mockSession.tasksToFail = [fail1]
+                        }
 
+                        it("should queue the failed task") {
+                            expect(service.taskQueue).to(contain(fail1))
+                            expect(mockSession.tasksToFail).to(contain(fail1))
+                        }
+
+                        it("should report failure in final") {
+                            service.resumeAll()
+                            expect(failedTasks?.first).toEventually(equal(fail1))
                         }
                         
                     }
 
                 }
-
-
-                
             }
 
         }

                    var task2: URLSessionDataTask!
                    var task3: URLSessionDataTask!

                    beforeEach {
                        isFinalCalled = false
                        service = ServiceQueue(configuration: config, faroSession: mockSession) { failedTasks in
                            isFinalCalled = true
                        }
                        task1 = service.perform(call, autoStart: false) { (_: Result<MockModel>) in }!
                        task2 = service.perform(call, autoStart: true) { (_: Result<MockModel>) in }!
                        task3 = service.perform(call, autoStart: false) { (_: Result<MockModel>) in }!
                    }

                    it("autoStart one") {

    override func spec() {
        describe("ServiceQueue") {

            var mockSession: MockAsyncSession!
            var service: ServiceQueue!
            let call = Call(path: "mock")
            let config = Configuration(baseURL: "mockService")
