For me the more interesting part is the BTer server-side
and the behaviour @deisik described. Still thinking about what he said
In my opinion, asynchronous api is much better overall
Though it may be harder to code since you have to keep track of the requests that you made internally. As I said, I worked with proprietary api's, and they specifically distinguish between asynchronous and synchronous modes of operation in the sense I mean it (that's basically how such modes are defined). Below is the relevant part which I copied from the developer's guide of one them (namely, quik trading api):
1. Пpи cинxpoннoй пepeдaчe тpaнзaкций выxoд из фyнкции ocyщecтвляeтcя тoлькo пocлe пoлyчeния oтвeтa oт cepвepa QUIK. Cлeдoвaтeльнo, oтпpaвлять cинxpoнныe тpaнзaкции мoжнo тoлькo пocлeдoвaтeльнo, дoжидaяcь oтвeтa o кaждoй oтпpaвлeннoй тpaнзaкции – этoт cпocoб пpoщe и бoлee пoдxoдит для пpoгpaммиcтoв c нeбoльшим oпытoм paзpaбoтки пpoгpaмм.
2. Пpи acинxpoннoй пepeдaчe тpaнзaкций выxoд из фyнкции ocyщecтвляeтcя cpaзy жe. Для пoлyчeния oтвeтa oб oтпpaвлeнныx acинxpoнныx тpaнзaкцияx иcпoльзyeтcя фyнкция oбpaтнoгo вызoвa (callback). Фyнкция вызывaeтcя пpи кaждoм пoлyчeнии oтвeтa oб иcпoлнeннoй или oтвepгнyтoй тpaнзaкции. Знaчeния cтaтycoв иcпoлнeния тpaнзaкции, кoтopыe вoзвpaщaютcя в фyнкции oбpaтнoгo вызoвa, пpивeдeны в oпиcaнии к тeм жe cтaтycaм, кoтopыe иcпoльзyютcя пpи oтпpaвкe тpaнзaкций чepeз фaйл
You can use Google Translate, but this piece essentially says that there are two modes of sending transactions, i.e. synchronous and asynchronous. In the former case (synchronous mode), the calling function waits for the reply from the server, while in the latter case (asynchronous mode), the function exits immediately and the reply is received through a callback function. The emphasized part repeats what I said before, i.e. synchronous transactions can be sent only sequentially after receiving a reply from the previous request. As I remember, the guide specifically mentions that if you try to send another synchronous transaction (say, from another thread) while still waiting for a reply, the behavior is undefined. I tried that, and it just crashed the dll library which was used for transacting (trans2quik.dll if you are curious)