deferredを用いた実装に修正
(動作確認済み)