WriteListener now returns WriteResponse