by passing `None` callers are going to need to disambiguate... I'm trying to think through minor API changes that would make this a bit more straightforward.

One idea is to require that callbacks always accept `response` and `error` params (and in the case above `response = None` and `error = <exception>`?  (same for the lines below in `_data_callback`)