@ensure_future
def f_map(future, fn=None, error_fn=None):
    """Map the output value of a future using the given functions.

    Signature: :code:`Future<A>, fn<A⟶B> ⟶ Future<B>`