It is safe to assume that both the SNI and NPN callbacks would have been called _before either call returns success notification ?
In other words, an app would be in "consistent" state - having decided on both the protocol (say SPDY/HTTP2.0) and possible certificate switch, before performing any of the SSL_read()/write(), as long as it makes sure to receive success from SSL_accept() or SSL_connect() beforehand ?