code: func (s *Session) Clone() *Session {
  	s.m.Lock()
  	scopy := copySession(s, true)
  	s.m.Unlock()
  	return scopy
  }
docs: // Clone works just like Copy, but also reuses the same socket as the original
  // session, in case it had already reserved one due to its consistency
  // guarantees.  This behavior ensures that writes performed in the old session
  // are necessarily observed when using the new session, as long as it was a
  // strong or monotonic session.  That said, it also means that long operations
  // may cause other goroutines using the original session to wait.