PromiseとPromiseじゃない値を受け取る関数を定義したいのだけどどうやって判定すんの?

async function get(x) {
if ( isPromise(x) ) return await x;
else return x;
}

isPromiseの完全な実装方法を知りたい
ググるとオブジェクトがthenを持ってたらPromiseだぜ!なんてジョークみたいなコメントが出てきて困った