1. An apparatus, comprising: a buffer memory; a plurality of memory devices; and a controller configured to: receive a page of data for storage; store the page of data in the buffer memory to generate a buffered data page; program the page of data in at least one memory device of the plurality of memory devices; store, based on successful programming of a given data bit included in the page of data, a particular logic value in a respective data bit of a plurality of data bits in the buffer memory; check the buffer memory to determine if programming the page of data was successful; retrieve previously programmed data from the at least one memory device in response to a determination that programming the page of data was unsuccessful; combine the previously programmed data with the buffered data page to generate a combined page; decode an Error Correction Code (ECC) associated with the combined page to generate a recovered page; and program the recovered page in the at least one memory device.