const Foo = {
async then (done) {
done(await request('https://foo.com'))
}
}
What happens when request throws an error (or the promise rejects)? ... in this case, there's no value to it.
But even then, the error handling completely breaks thenable conventions, which is a second function passed to then. In the end, Promises/thenables have a convention and this breaks it without providing more value than callbacks, while creating a context object construct.