It("destroys the container", func() { err := apiClient.Destroy("some-handle") Ω(err).ShouldNot(HaveOccurred()) Ω(serverBackend.DestroyArgsForCall(0)).Should(Equal("some-handle")) }) Context("concurrent with other destroy requests", func() { var destroying chan struct{} BeforeEach(func() { destroying = make(chan struct{}) serverBackend.DestroyStub = func(string) error { close(destroying) time.Sleep(time.Second) return nil } }) It("only destroys once", func() { go apiClient.Destroy("some-handle") <-destroying err := apiClient.Destroy("some-handle") Ω(err).Should(HaveOccurred()) Ω(serverBackend.DestroyCallCount()).Should(Equal(1)) }) })