Change API response to HTTPFuture

1) Change response to `HTTPFuture`

2) add timeout to API call

3) raise error if response not `OK`
I have tried to keep the non-test methods short. I will try to refactor the __call__ method.