Changes after review.

Return a canvas directly for synchronous operations and only return a promise when using maki id or url.