})
			Ω(err).Should(MatchError(retryableErrors[0]))

			Ω(innerConnection.StreamInCallCount()).Should(Equal(1))
		})
	})

	Describe("StreamOut", func() {
		handle := "suitcase"

		var gotReader io.ReadCloser

		itRetries(func() error {
			var err error
			gotReader, err = conn.StreamOut(handle, garden.StreamOutSpec{
				Path: "/etc/passwd",
				User: "******",
			})
			return err
		}, func(err error) {
			innerConnection.StreamOutReturns(gbytes.NewBuffer(), err)
		}, func() int {
			return innerConnection.StreamOutCallCount()
		}, func() {
			It("calls through to garden", func() {
				Ω(innerConnection.StreamOutCallCount()).Should(Equal(1))

				calledHandle, calledSpec := innerConnection.StreamOutArgsForCall(0)
				Ω(calledHandle).Should(Equal(handle))
				Ω(calledSpec.Path).Should(Equal("/etc/passwd"))
				Ω(calledSpec.User).Should(Equal("admin"))
			})