Version handshake

addresses #166 
This should return an error, yes. Our context expired. And, we shouldn't close here. parent will. So:

```Go
case <-s.ctx.Done():
	return s.ctx.Err() // or whatever the method on context is
```