With ES6 we get a convenient way of extracting multiple values from data stored in (possibly nested) objects and Arrays.
Javascript Promises arrived natively with ES6 and are essentially a simpler way of dealing with asynchronous (async) operations in comparison to traditional callback-based approaches (ES5).
With ES6 developers have new built-in methods to make it easier working with Strings, Arrays, Objects and Numbers.
The spread syntax allows arrays, objects and array like objects (e.g. arguments object, DOM node objects) to be expanded in places where multiple arguments (for function calls) are expected.
Arrow functions are a simpler and more concise way to declare functions and inherit the feature to solve the “this” problem in javascript.