code: func sendKeepAliveWithTimeout(conn RequestSender, timeout time.Duration, closeContext context.Context) bool {
  	errorCh := make(chan error, 1)
  
  	go func() {
  		// SendRequest will unblock when connection or channel is closed.
  		_, _, err := conn.SendRequest(teleport.KeepAliveReqType, true, nil)
  		errorCh <- err
  	}()
  
  	select {
  	case err := <-errorCh:
  		if err != nil {
  			return false
  		}
  		return true
  	case <-time.After(timeout):
  		return false
  	case <-closeContext.Done():
  		return false
  	}
  }
docs: // sendKeepAliveWithTimeout sends a keepalive@openssh.com message to the remote
  // client. A manual timeout is needed here because SendRequest will wait for a
  // response forever.