description in the
When requesting a block by the hash component of the BlockIdentifier, this request MUST be idempotent: repeated invocations for the same hash-identified block must return the exact same block contents.
There is a situation, on the best chain, block A can be obtained at time A by block_hash_a, but at time B block A may not be obtained by block_hash_a (at time B the block with block_hash_a not on the best chain). What should we do with this situation? need to save forked blocks manually?