                             "post 2",
                             "post 3",
                             ]),
+                        timeout: 0.1
+                    )
+                }
+            }
+
+            context("when dispatched fetchPosts but failed") {
+                beforeEach {
+                    store.dispatch(asyncAction: fetchPostsFailed)
+                }
+
+                it("starts immediately") {
+                    expect(store.state.started).to(beTrue())
+                }
+
+                it("success after 0.1 seconds") {
+                    expect(store.state.error).to(beNil())
+                    expect(store.state.error).toNotEventually(
+                        beNil(),
                         timeout: 0.1
                     )
                 }


            context("when dispatched fetchPosts successfully") {
                beforeEach {
                    store.dispatch(asyncAction: fetchPosts)
                }

                it("starts immediately") {

    }
}

private func fetchPostsSuccessfully(dispatch: @escaping Store.Dispatch) {
    dispatch(Actions.fetchPosts(.start))

    DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
