非同期通信中のキャンセルについて

遅ればせながらprototype.jsを使って非同期通信するプログラムを書いて遊んでいてふと思ったこと。

通信のキャンセルはどうやるのだろうか

http://www.imgsrc.co.jp/~kuriyama/prototype/prototype.js.html
を見ても(たぶん)それらしい記述はない。
Webから離れてデスクトップアプリケーションで考えてみると、重い処理をするときにはスレッドを立ち上げてバックグラウンドで処理させるのが普通だと思う。でないと処理中はユーザーの応答を受け付けられないので利用者から見るとフリーズしているように見えてしまうから。で、バックグラウンドで処理している間、利用者はほかのこともできるし、バックグラウンドの処理をキャンセルすることもできる。当たり前だけれど。これが普通。こうなっていないアプリは利用者から見放されてしまうだろう(少なくともオレはそんなの使いたくない)。
で、たまたま今日のMSDN Flashにはこんなのがあった。
http://www.microsoft.com/japan/msdn/vs05/vbasic/threadinginvb2005.asp
そう。こういうことだ。
そしてWebの世界に戻る。もちろんできるんだろう。キャンセル。
でもprototype.jsはできない。結局、prototype.jsAjax.RequestとかAjax.Updaterはブラウザが実装しているXMLHttpRequestオブジェクトのラッパーなのでラップされてる方を見てみる。とやっぱりあった。

abort() Stops the current request
Safari - Apple Developer

まあそうだよな。あるよな。
でも、もしかしたらもっと根本の問題で、「キャンセルが必要になるほど重い通信を非同期でするな」ってことなのかもしれない。どうなんだろう。
それだけ。
つづく(かもしれない)。