asíncrono / espera siempre devuelve promesa

Estoy intentando la funcionalidad async / wait. Tengo ese código imitando una solicitud:

const getJSON = async () => {
  const request = () => new Promise((resolve, reject) => (
    setTimeout(() => resolve({ foo: 'bar'}), 2000)
  ));

  const json = await request();
  return json;
}

Cuando uso el código de esta manera

console.log(getJSON()); // returns Promise

devuelve una promesa

pero cuando llamo a esta línea de código

getJSON().then(json => console.log(json)); // prints { foo: 'bar' }

imprime json como se esperaba

¿Es posible usar solo código comoconsole.log(getJSON())? ¿Qué no entiendo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta