1. A method of mitigating read errors following programming in a multi-level non-volatile memory, the method comprising: in response to a write request, a controller of the non-volatile memory programming data into the non-volatile memory to service the write request and temporarily buffering, in a cache, pages of the data programmed into the non-volatile memory for at least a predetermined time period following the programming; receiving an initial read request after the programming for a target page of the data programmed into the non-volatile memory; in response to receiving the initial read request during the predetermined time period after programming, the initial read request hitting in the cache and the controller servicing the initial read request by accessing data of the target page in the cache and not from the non-volatile memory; and in response to the initial read request missing in the cache, the controller servicing the initial read request from the non-volatile memory.