anchor.diff:  startup({connect, Host, Username, Password, Opts}, From, State) ->
       Port      = proplists:get_value(port, Opts, 5432),
       Sock_Opts = [{nodelay, true}, {active, false}, {packet, raw}, binary],
  +    Async   = proplists:get_value(async, Opts, undefined),
       case gen_tcp:connect(Host, Port, Sock_Opts) of
           {ok, Sock} ->
               Reader = spawn_link(?MODULE, read, [self(), Sock, <<>>]),
  
positive.code: -include("zotonic.hrl").
  
  -record(state, {
            reader,
            sock,
            parameters = [],
  
negative.code:             [Name, Value] = decode_strings(Data),
              gen_fsm:send_all_state_event(Fsm, {parameter_status, Name, Value}),
              decode(Fsm, Sock, Tail);
          <<Data:Len2/binary, Tail/binary>> when Type == $A ->
              <<Pid:?int32, Strings/binary>> = Data,
              case decode_strings(Strings) of
                  [Channel, Payload] -> ok;
                  [Channel]          -> Payload = <<>>
              end,
              gen_fsm:send_all_state_event(Fsm, {notification, Channel, Pid, Payload}),
              decode(Fsm, Sock, Tail);
          <<Data:Len2/binary, Tail/binary>> ->
              gen_fsm:send_event(Fsm, {Type, Data}),
              decode(Fsm, Sock, Tail);
  