Update webclient to use promises instead of callbacks.