If cancel() or setStream() was previously called then setStream() throws away the stream argument. It should cancel() the stream to make sure resources are freed, although I think only DelayedClientTransport benefits.
This should not be done until after #1536. I don't know if OkHttp suffers a similar problem. If so, we may want to revisit whether it makes sense to allow streams to be cancelled before start().