code: def read_body(self, body):
          
          result_spec = self.result_type.thrift_spec
  
          # raise application exception, if present
          for exc_spec in result_spec[1:]:
              exc = getattr(body, exc_spec[2])
              if exc is not None:
                  raise exc
  
          # success - non-void
          if len(result_spec) >= 1 and result_spec[0] is not None:
  
              # value expected, but got none
              # TODO - server side should use this same logic
              if body.success is None:
                  raise ValueExpectedError(
                      'Expected a value to be returned for %s, '
                      'but recieved None - only void procedures can '
                      'return None.' % self.endpoint
                  )
  
              return body.success
  
          # success - void
          else:
              return None
docs: Handles the response body for this request.
  
          If the response body includes a result, returns the result unwrapped
          from the response union. If the response contains an exception, raises
          that exception.