Context("when acquiring a lock", func() {
					It("fails", func() {
						bsession, err := consuladapter.NewSession("b-session", 20*time.Second, client, sessionMgr)
						Expect(err).NotTo(HaveOccurred())

						err = bsession.AcquireLock(lockKey, lockValue)
						Expect(err).To(HaveOccurred())
					})
				})
			})

			Context("and consul goes down during a renew", func() {
				BeforeEach(func() {
					oldStub := sessionMgr.RenewPeriodicStub
					sessionMgr.RenewPeriodicStub = func(initialTTL string, id string, q *api.WriteOptions, doneCh chan struct{}) error {
						stopCluster()
						return oldStub("1s", id, q, doneCh)
					}
				})

				It("reports an error", func() {
					var err error
					Eventually(session.Err(), 3*time.Second).Should(Receive(&err))

					// a race between 2 possibilities
					if urlErr, ok := err.(*url.Error); ok {
						Expect(ok).To(BeTrue())
						opErr, ok := urlErr.Err.(*net.OpError)
						Expect(ok).To(BeTrue())
						Expect(opErr.Op).To(Equal("dial"))
					} else {
						Expect(err).To(Equal(consuladapter.LostLockError(lockKey)))