D3 .join() callback returns

For d3 .join() callbacks, I see this pattern used:

  update =>
    update.call(update => update.transition() ...)

I don’t understand why you would use call() on the update selection since its not a function. Maybe object with proxy? (Still cant see why passing update to itself isnt redundant)

Also, why is the Selection => Selection ... pattern used instead of Selection => {Selection ...} since the return is not used and literally does nothing? Is it just for simplicity?