anchor.diff:  %% they upgrade a active socket. 
   handle_sync_event(start, _, connection, State) ->
       {reply, connected, connection, State, get_timeout(State)};
  +handle_sync_event(start, _From, error, {Error, State = #state{}}) ->
  +    {stop, {shutdown, Error}, {error, Error}, State};
   handle_sync_event(start, From, StateName, State) ->
       {next_state, StateName, State#state{from = From}, get_timeout(State)};
   
  
positive.code: %% the event. It is also called if a timeout occurs.
  %%
  %%--------------------------------------------------------------------
  -spec hello(start | #hello_request{} | #client_hello{} | #server_hello{} | term(),
  	    #state{}) -> gen_fsm_state_return().    
  %%--------------------------------------------------------------------
  hello(start, #state{host = Host, port = Port, role = client,
  		    ssl_options = SslOpts, 
  		    session = #session{own_certificate = Cert} = Session0,
  		    transport_cb = Transport, socket = Socket,
  		    connection_states = ConnectionStates,
  		    renegotiation = {Renegotiation, _}} = State0) ->
      Hello = ssl_handshake:client_hello(Host, Port, 
  				       ConnectionStates, 
  				       SslOpts, Renegotiation, Cert),
  
      Version = Hello#client_hello.client_version,
      Hashes0 = ssl_handshake:init_hashes(),
  
negative.code: 
  connection(Msg, State) ->
      handle_unexpected_message(Msg, connection, State).
  
  %%--------------------------------------------------------------------
  %% Description: Whenever a gen_fsm receives an event sent using
  %% gen_fsm:send_all_state_event/2, this function is called to handle
  