i think the isPromise check is made redundant by the isPromiseLike check?