client/state/domains/management/reducer.js
function sanitizeExtra( data ) {
	const path = data._contactDetailsCache ? [ '_contactDetailsCache', 'extra' ] : 'extra';
	return data && isArray( get( data, path ) ) ? omit( data, path ) : data;
}
function sanitizeExtra( data ) {
	const path = data._contactDetailsCache ? [ '_contactDetailsCache', 'extra' ] : 'extra';
	return data && isArray( get( data, path ) ) ? omit( data, path ) : data;
}
function sanitizeExtra ( data ) { const path = data . _contactDetailsCache ? [ '_contactDetailsCache' , 'extra' ] : 'extra' ; return data && isArray ( get ( data , path ) ) ? omit ( data , path ) : data ; }
Drop data.extra if it's an array

Assigning extra as an array (due to a bug in the server) leads to a
a really weird state that effectively disables the extra form for the user
permanently.

These values will be persisted locally, so we need to handle them here
even if we catch them all on the backend.

In case you're curios, Here's the weirdness:

weird = Object.assign( [1,2,3], { foo:'bar' } )
// [1, 2, 3, foo: "bar"] (wat?)
weird.map( v => v );
// [1, 2, 3] (no foo for you!)

@param  {Object} data   Potential contact details
@return {Object}        Sanitized contact details
Drop data . extra if it s an array