Separate fetching from fetch lifecycle handling