code: func SelectProtoOrFail(proto string, rwc io.ReadWriteCloser) error {
  	err := handshake(rwc)
  	if err != nil {
  		return err
  	}
  
  	return trySelect(proto, rwc)
  }
docs: // SelectProtoOrFail performs the initial multistream handshake
  // to inform the muxer of the protocol that will be used to communicate
  // on this ReadWriteCloser. It returns an error if, for example,
  // the muxer does not know how to handle this protocol.