code: function(cb) {
  		var todos = [], prevTodos;
  		var model = this;
  
  		open().then(function(db){
  			var os = db.transaction(["todos"], "readwrite")
  				.objectStore("todos");
  
  			var req = os.openCursor();
  
  			req.onsuccess = function(e){
  				var cursor = e.target.result;
  				if(cursor){
  					todos.push(cursor.value);
  					cursor.continue();
  				} else {
  					prevTodos = todos.slice();
  					cb.call(model, todos);
  					done();
  				}
  			};
  
  			function done(){
  				(todos || []).forEach(function(todo){
  					os.put(todo);
  				});
  				prevTodos.forEach(function(todo){
  					if(todos.indexOf(todo) === -1) {
  						os["delete"](todo.text);
  					}
  				});
  			}
  		});
  	  }
docs: Implement local storage handling