こんにちは。Tokyo Otaku Mode(TOM)ソフトウェアエンジニアの稲田です。 TOMが開発、運営している自社ECサイトのotakumode.comのバックエンドは現在Node.jsで動いています。その中で多数の関数が定義され利用されていますが、そのほとんどがCallbackを取るようになっています。 しかし最近、バックエンドのNode.jsのバージョンがv6.11.xにアップデートされジェネレータが使えるようになり、co + yieldの組み合わせで同期的な書き方ができるようになりました。このco + yieldで書くために、PromiseとCallbackの両方に対応した関数を書いたときの問題とその解決方法を書いておきます。 TL;DR const f = (callback = () => {}) => { const p = new Promise((resolve, r