Thanks for the insight on this question.
From the looks of it, all IMap operations block for I/O one way or another, even if sometimes it's a fast operation that only happens once, such as getMap().
Still, it would be better if we could have more control over this behavior.
In fact, I think IMap should have a fully synchronous API, as it has been originally.
Over time, we've been getting some async methods added to IMap, but to get full async behavior a lot more will need to be added, which will effectively become a duplication of the whole IMap interface.
Instead of adding a few async methods here and there, a fully asynchronous API on a different interface would be a more convenient choice IMHO.
That way we'd have the power to choose whether to work in a non-blocking way, and it would simplify an already growing IMap interface for blocking users.
Something along the lines of AsyncAtomicLong... my guess is that we'll get an AsyncIMap soon? :)
Here's hoping that we get a fully asynchronous API for IMap in the future.