code: async def _handle_rpc_result(self, message):
          
          rpc_result = message.obj
          state = self._pending_state.pop(rpc_result.req_msg_id, None)
          self._log.debug('Handling RPC result for message %d',
                        rpc_result.req_msg_id)
  
          if not state:
              # TODO We should not get responses to things we never sent
              # However receiving a File() with empty bytes is "common".
              # See #658, #759 and #958. They seem to happen in a container
              # which contain the real response right after.
              try:
                  with BinaryReader(rpc_result.body) as reader:
                      if not isinstance(reader.tgread_object(), upload.File):
                          raise ValueError('Not an upload.File')
              except (TypeNotFoundError, ValueError):
                  self._log.info('Received response without parent request: {}'
                                 .format(rpc_result.body))
              return
  
          if rpc_result.error:
              error = rpc_message_to_error(rpc_result.error, state.request)
              self._send_queue.append(
                  RequestState(MsgsAck([state.msg_id]), loop=self._loop))
  
              if not state.future.cancelled():
                  state.future.set_exception(error)
          else:
              with BinaryReader(rpc_result.body) as reader:
                  result = state.request.read_result(reader)
  
              if not state.future.cancelled():
                  state.future.set_result(result)
docs: Handles the result for Remote Procedure Calls:
  
              rpc_result#f35c6d01 req_msg_id:long result:bytes = RpcResult;
  
          This is where the future results for sent requests are set.