always call callback with context