edit expose postJSON, so it could be swapped by user impl