Overriding 'user.login.http' method
I figured out how to actually do this. We need to go to the class from which the object was instantiated and figured out any public getter and setter methods. This should be obvious for someone well versed with OOPs. Here is I managed to modify the response. 

public function login(Request $request) {
  $response_data = parent::login($request);

  // We need to get data in the original response and there is actually a 
  // a public method provided by the parent class getContent which we are using
  // below.
  $mydata = $response_data-&gt;getContent();

  // Original data is serialized so we need to decode it. 
  $decoded_data = $this-&gt;serializer-&gt;decode($mydata, 'json');
  $uid = $decoded_data['current_user']['uid'];
  $user = $this-&gt;userStorage-&gt;load($uid);

  // custom function to process the user
  $mynewdata = $this-&gt;customfunction($user);

  // Adding to the original decoded response array and
  // then encoding again. 
  $decoded_data += $mynewdata;
  $combined data = $this-&gt;serializer-&gt;encode($decoded_data, 'json');

  // Setting the content to the origina response object. Important!!!
  $response_data-&gt;setContent($encoded_sponsor_data);
  return $response_data;
}