I've taken a crack at cleaning this up.  I got rid of callerFuture and now just return the promise that was passed in. The if statement gets simplified since the write of the final frame will just use the caller's promise, so no need to check for success.  If any one of the chunk writes fail, however, all promises (including the caller's) are set as failed.