Two small things:
1) Please add a comment above for this function explaining the args passed to `done()` and `fail()`
2) For `resolveWith`, could you pass in just the message rather than the entire data object?  That would be more consistent with the other server functions.