ES2015でPromiseについで、ES2017でAsync/Awaitが追加され、Promiseが更に使いやすくなってきているのもかかわらず、古くからあるパッケージなどは、対応させるのが大変なのか、一向に対応してくれないものもたくさんあります。
ある日突然callbackからPromiseに変わったらみんな戸惑うので、callbackが無いときにPromiseを返すような処理を書かなくてはなりません。単純に考えてみれば、callbackがある時の処理と、callbackがなくPromiseを返す処理、で倍の量になってしまうのではないかと僕も思っていました。
しかし、実際にそうでしょうか?
その答えはytdl-coreのソースコードを眺めているときでした。
この関数では、引数にcallbackが無いときに、自身をcallback付きで呼び出し、その中でresolve/rejectをするPromiseを返していたのです。1
これで既存のコードも楽にPromiseに対応できそうです!
よきPromiseライフを