Moving to blocking redo operations for the API

Calls to certain operations may fail in large number in case of network
or OS errors when pipelining socket operations. By using blocking calls,
we're able to reset connections or cancel individual requests without
breaking all subsequent calls.