let promise = fnThatYouWannaCheck(); if(promise && typeof promise.then === 'function' && promise[Symbol.toStringTag] === 'Promise') { // is compliant native promise implementation } else { throw new Error('async function expected'); }