Q:

Why do arrow functions accept function invocations in body? 

This is so strange!  I'm looking at AWS Lambda example code, and they do a strange ES6 declaration for their callbacks:
const done = (err, res) => callback(null, {
    statusCode: err ? ' 400' : '200',
    body: err ?  err.message : JSON.stringify(res),
    headers: {
        'Content-Type': 'application/json',
    },
});

So, I made my own simplified example to try to make sense of this declaration. 

function add (x, y) {
  return x + y
}

var done = (a, b) => add(1,7)

console.log(done(1,2)) // 8

The code above logs 8 at the end.  I thought it would be the equivalent of:

function add (x, y) {
  return x + y
}

var done = function (a, b) { add(1,7) }

console.log(done(1,2)) // undefined

But it's not.  It produced undefined.  Can someone explain how the function invocation in the fat arrow declaration doesn't just execute and return a value? 

A:

When the right hand side of the => is a statement (rather than a block) there is an implicit return. 
Your function expression…

var done = function (a, b) { add(1,7) }

… omits that return statement.  It should be:
var done = function (a, b) { return add(1,7) }

