よろしくお願いいたします。
HTMLでコード入力用のテキストボックス(#item_cd)があります。
javascriptでは、#item_cdのonblurイベントで、入力されたコードからマスタデータを参照して、取得した値から名称の表示や計算を行うような処理を記述しました。
処理はdeferredとpromiseを使って取得~計算までを一連の流れとして記述しています。

また、画面には「登録」ボタンが用意されており、登録ボタンのclickイベントで、入力されたコードとフォーム内に保持している情報からデータの更新を行うような処理が記述されています。

この状態で、#item_cdにフォーカスをセットした状態でコードを入力し、フォーカスを動かさずに登録ボタンをclickすると、onblur→clickの順番にイベントは発火しているのですが、onblurに記述した処理が完了する前にclickに記述した登録処理が実行されて、エラーが発生してしまいます。

基本的にフォーム上でコードを入力して名称を表示するといった処理は非同期で行いたいのですが、登録ボタンを押す点については他のイベント処理が完了するまで待つ必要があります。
力技ですが各イベントの開始と終了時にフラグON/OFFを行い、登録ボタンがclickされたタイミングでチェックする方法が思いつきましたが、他に良い方法があれば教えて下さい。


2017.3.27 追記
拙いですが、サンプル作ってみました。本当はjquery-2.1.1ですが、選択肢にないのでJqueryの2.1.3でも動きます。Blurで行う処理を遅延させる為にわざとwaitを入れてあります。https://jsfiddle.net/tika1952/p67guu86/23/