repB.StateClientTimeoutReturns(client.Timeout)
			}
			repC.StateReturns(BuildCellState("the-zone", 10, 10, 100, false, linuxOnlyRootFSProviders, nil), errors.New("timeout"))
			repC.StateClientTimeoutReturns(4 * time.Second)
			repC.SetStateClientStub = func(client *http.Client) {
				repC.StateClientTimeoutReturns(client.Timeout)
			}
		})

		It("retries with a backing off delay", func() {
			zones := auctionrunner.FetchStateAndBuildZones(logger, workPool, clients, metricEmitter)
			Expect(zones).To(HaveLen(0))

			Expect(repA.StateCallCount()).To(Equal(4))
			Expect(repA.SetStateClientCallCount()).To(Equal(3))
			Expect(repA.SetStateClientArgsForCall(0).Timeout).To(Equal(10 * time.Second))
			Expect(repA.SetStateClientArgsForCall(1).Timeout).To(Equal(20 * time.Second))
			Expect(repA.SetStateClientArgsForCall(2).Timeout).To(Equal(40 * time.Second))
			Expect(repB.StateCallCount()).To(Equal(4))
			Expect(repB.SetStateClientCallCount()).To(Equal(3))
			Expect(repB.SetStateClientArgsForCall(0).Timeout).To(Equal(4 * time.Second))
			Expect(repB.SetStateClientArgsForCall(1).Timeout).To(Equal(8 * time.Second))
			Expect(repB.SetStateClientArgsForCall(2).Timeout).To(Equal(16 * time.Second))
			Expect(repC.StateCallCount()).To(Equal(4))
			Expect(repC.SetStateClientCallCount()).To(Equal(3))
			Expect(repC.SetStateClientArgsForCall(0).Timeout).To(Equal(8 * time.Second))
			Expect(repC.SetStateClientArgsForCall(1).Timeout).To(Equal(16 * time.Second))
			Expect(repC.SetStateClientArgsForCall(2).Timeout).To(Equal(32 * time.Second))
		})
	})
})